Я пытаюсь упаковать моно приложение для выполнения как systemd сервис.
Я следовал инструкциям здесь: https://wiki.debian.org/Teams/pkg-systemd/Packaging
Я добавил горячекатаный-systemd (> = 1.5) к моей сборке файла управления debian, зависит.
Я добавил - with=systemd к своему файлу правил следующим образом:
%:
dh $@ --with=cli --with=systemd
Я добавил свой сервисный файл к моей debian папке, названной mypackage.service со следующим содержанием:
[Unit]
Description=My Service Description
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/mono /usr/lib/mypackage/myservice.exe
[Install]
WantedBy=multi-user.target
Однако здание дает следующие lintian предупреждения и ошибки:
Now running lintian...
E: mypackage: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/mypackage
W: mypackage: init.d-script-not-marked-as-conffile etc/init.d/mypackage
E: mypackage: init.d-script-not-included-in-package etc/init.d/mypackage
Это смущает меня по нескольким причинам
Обновление
Сгенерированный postrm файл следующие:
#!/bin/sh
set -e
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_systemd_enable
if [ "$1" = "remove" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper mask mypackage.service >/dev/null
fi
fi
if [ "$1" = "purge" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge mypackage.service >/dev/null
deb-systemd-helper unmask mypackage.service >/dev/null
fi
fi
# End automatically added section
сгенерированный prerm файл следующие:
#!/bin/sh
set -e
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
deb-systemd-invoke stop mypackage.service >/dev/null
fi
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/mypackage" ] || [ -e "/etc/init/mypackage.conf" ]; then
invoke-rc.d mypackage stop || exit $?
fi
# End automatically added section
Пакет на самом деле устанавливает прекрасный, и сервис запускается правильно. lintian ошибки вызывают беспокойство, и я хотел бы добраться до сути относительно них.
Я столкнулся с этой проблемой также. Это - то, что я придумал:
Вы захотите переопределить dh_installinit и dh_systemd_start, это - пример от моего сервиса сетевого моста:
#!/usr/bin/make -f
PKGDIR=debian/tmp
%:
dh $@ --with systemd
override_dh_installinit:
dh_systemd_enable -popenstack --name=openstack openstack.service
dh_installinit -popenstack --no-start --noscripts
dh_systemd_start -popenstack --no-restart-on-upgrade
override_dh_systemd_start:
echo "Not running dh_systemd_start"
полный источник моего пакета может быть найден здесь: https://github.com/Ubuntu-Solutions-Engineering/openstack-deb/tree/master/debian
я также использовал https://github.com/lxc/lxd-pkg-ubuntu/blob/dpm-xenial/debian/rules как ссылка.
, Надо надеяться, это получит Вас идущий, поскольку это действительно брало меня некоторое время для понимания этого.
Если не включая SysV или Выскочку init сценарии, сообщить dh_installinit
не изменить postinst
/postrm
/prerm
сценарии. dh_systemd
обработает его.
override_dh_installinit:
dh_installinit --noscripts
Это относится debhelper
уровень совместимости <10 и с 10 даже при том, что dh_systemd
был объединен в debhelper
.
Согласно https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=800043 debhelper
уровень совместимости 11> = это будет иметь, это зафиксировало.