Я не стал ничего придумывать, а взял бинарники от Tegu и упаковал их в deb пакет, чтобы максимально упросить установку. Видел, что кто-то docker контейнер собирает для этого. Но как по мне докер тут вообще не нужен. Задача полностью решается обычным пакетным менеджером.
Итак, ставим nfpm:
# echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list# apt update# apt install nfpmГотовим для него конфиг nfpm.yaml:
name: "tegu"arch: "amd64"platform: "linux"version: "v1.27.0"section: "default"priority: "optional"conflicts: - exim4 - postfixmaintainer: "Kalmetov Igor <ik@mbk-lab.ru>"description: | Tegu is the free mailserver.vendor: "mbk-lab.ru"homepage: "https://project.mbk-lab.ru"contents:- src: ~/tegu/bin/teguctl dst: /opt/tegu/bin/- src: ~/tegu/sbin/tegu dst: /opt/tegu/sbin/- src: ~/tegu/tegu.conf dst: /etc/tegu.conf type: config- src: ~/tegu/tegu.service dst: /etc/systemd/system/tegu.service type: configoverrides: deb: scripts: preinstall: /root/tegu/preinstall.sh postinstall: /root/tegu/postinstall.shДля простоты и демонстрации возможностей nfpm некоторые вещи упростил и поместил в скрипты. Те же права доступа и создание каталогов можно сделать сразу в конфигурации nfpm, а не в скриптах.
Файлы
tegu.service и tegu.conf взял из документации. Добавил свои скрипты для выполнения некоторых действий.preinstall.sh:
#!/bin/bashmkdir /opt/tegumkdir /opt/tegu/{bin,sbin,data,certs}chown -R mail. /opt/tegu/{data,certs}chgrp -R mail /opt/tegu/{bin,sbin}chmod 750 /opt/tegu/{data,certs}chmod -R 750 /opt/tegu/sbinchmod -R 750 /opt/tegu/binpostinstall.sh:
chown root.mail /etc/tegu.confchmod 640 /etc/tegu.confsetcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegusystemctl enable tegu.servicesystemctl start tegu.serviceСобираем пакет:
# nfpm pkg --packager deb --target ~/using deb packager...created package: ~/tegu_1.27.0_amd64.debПакет собран. Можно установить:
# dpkg -i ~/tegu_1.27.0_amd64.debПодобная сборка легко автоматизируется. Было бы неплохо, если бы разработчики сразу собирали свои пакеты. Это гораздо удобнее и для пользователей, и для разработчиков, так как не надо писать подробную инструкцию.
⇨ Сайт / Исходники
#linux #debian #apt #tegu