Лучший способ установить службу как часть пакета debian

Я создаю пакет Debian для программного приложения, которое запускается из служебного сценария, и хотел бы узнать, как это лучше всего сделать.

Сейчас я думаю, что пакет должен скопировать исполняемый файл в / usr / bin , а службу в / etc / systemd / system / и иметь postinst скрипт для выполнения

systemctl enable myapp.service

Это правильный подход или существует более «стандартная» процедура для работы со службами в рамках управления пакетами Debian?

0
задан 11 November 2019 в 14:40

1 ответ

Что я делаю, так это создаю папку .../debian в своих проектах и ​​создаю файл .service для демона. Я также добавляю один параметр командной строки, например, в файл .../debian/rules:

%:
    dh $@ --with systemd --parallel

Эта опция указывает системе использовать systemd для обработки . service (в противном случае он возвращается к SYS-V).

Еще одна вещь, которую не забудьте сделать, это добавить #DEBHELPER# в ваши сценарии post/pre inst/rm. Это очень важно, так как это то, что на самом деле заставляет все это работать.

Например, вот конфигурация в сценарии postinst:

#!/bin/sh

if [ "$1" = "configure" ]
then
     # Turn on IP forwarding
     echo 1 > /proc/sys/net/ipv4/ip_forward
fi

#DEBHELPER#

Позиция в вашем сценарии будет зависеть от того, что вы делаете в своем сценарии. т. е. если вы хотите запустить команду после запуска службы, поместите #DEBHELPER# перед ней. Если вам нужно завершить настройку, которую будет использовать ваша служба, поместите #DEBHELPER# после этой конфигурации.

У меня есть пример в моем Snap! проект.

Примечание: если у вас есть проект с более чем одним демоном, вы можете использовать трюк с папкой .../debian для одного из них. Другой, вы должны установить вручную (самостоятельно).

0
ответ дан 5 November 2020 в 00:41

Другие вопросы по тегам:

Похожие вопросы: