Ich versuche, eine Mono-Anwendung so zu verpacken, dass sie als systemd-Dienst ausgeführt wird.
Ich habe die Anweisungen hier befolgt: https://wiki.debian.org/Teams/pkg-systemd/Packaging
Ich habe dh-systemd (> = 1.5) zu meiner Debian-Steuerdatei hinzugefügt.
Ich habe --with = systemd wie folgt zu meiner Regeldatei hinzugefügt:
%:
dh $@ --with=cli --with=systemd
Ich habe meine Servicedatei mit folgendem Inhalt zu meinem Debian-Ordner namens mypackage.service hinzugefügt:
[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
Das Gebäude gibt jedoch die folgenden lintianischen Warnungen und Fehler aus:
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
Das verwirrt mich aus mehreren Gründen
- Diese Warnungen beziehen sich auf init.d, das alte System, das durch systemd ersetzt wird. Sind diese Fehler und Warnungen einfach falsch? Glaubt debuild, dass ich init.d verwende, weil ich mein Paket falsch konfiguriert habe?
- Ich hatte den Eindruck, dass --with = systemd diese Skripte für mich erstellen würde.
Aktualisieren
Die generierte postrm-Datei lautet wie folgt:
#!/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
Die generierte Prerm-Datei lautet wie folgt:
#!/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
Das Paket wird tatsächlich einwandfrei installiert und der Dienst wird ordnungsgemäß gestartet. Die Lintian-Fehler sind besorgniserregend, und ich möchte ihnen auf den Grund gehen.
dh
) geeignete generieren. Führen Sie dpkg-deb --control
auf der generierten deb - Datei und Blick in die neu erstellte DEBIAN
Verzeichnis für postinst
, postrm
Dateien.
postrm
Skript? Hat es die Debhelper Boilerplate?