Sto cercando di creare un pacchetto di un'applicazione mono da eseguire come servizio systemd.
Ho seguito le istruzioni qui: https://wiki.debian.org/Teams/pkg-systemd/Packaging
Ho aggiunto dh-systemd (> = 1.5) alla mia compilazione del file di controllo debian.
Ho aggiunto --with = systemd al mio file delle regole come segue:
%:
dh $@ --with=cli --with=systemd
Ho aggiunto il mio file di servizio alla mia cartella debian chiamata mypackage.service con i seguenti contenuti:
[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
Tuttavia, la costruzione fornisce i seguenti avvisi ed errori di 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
Questo mi confonde per diversi motivi
- Questi avvertimenti riguardano init.d che è il vecchio sistema che viene sostituito da systemd, questi errori e avvertenze sono sbagliati, debuild pensa che io stia usando init.d perché ho configurato il mio pacchetto sbagliato?
- Avevo l'impressione che --with = systemd avrebbe creato questi script per me.
Aggiornare
Il file postrm generato è il seguente:
#!/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
il file prerm generato è il seguente:
#!/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
Il pacchetto si installa effettivamente bene e il servizio si avvia correttamente. Gli errori di lintian sono preoccupanti e mi piacerebbe arrivare al fondo di essi.
dh
) dovrebbe generare quelli appropriati. Eseguire dpkg-deb --control
sul file deb generato, e lo sguardo nella recente creazione DEBIAN
directory per postinst
, postrm
i file.
postrm
sceneggiatura? Ha la caldaia debhelper?