Estoy tratando de empaquetar una aplicación mono para que se ejecute como un servicio systemd.
He seguido las instrucciones aquí: https://wiki.debian.org/Teams/pkg-systemd/Packaging
Agregué dh-systemd (> = 1.5) a mi compilación del archivo de control de Debian.
He agregado --with = systemd a mi archivo de reglas de la siguiente manera:
%:
dh $@ --with=cli --with=systemd
Agregué mi archivo de servicio a mi carpeta de debian llamada mypackage.service con los siguientes contenidos:
[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
Sin embargo, la construcción ofrece las siguientes advertencias y errores de 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
Esto me confunde por varias razones
- Estas advertencias son sobre init.d, que es el sistema antiguo que se reemplaza por systemd, ¿son estos errores y advertencias incorrectos, debuild cree que estoy usando init.d porque configuré mi paquete incorrectamente?
- Tenía la impresión de que --with = systemd crearía estos scripts para mí.
Actualizar
El archivo postrm generado es el siguiente:
#!/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
El archivo prerm generado es el siguiente:
#!/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
El paquete realmente se instala bien y el servicio se inicia correctamente. Los errores de lintian son preocupantes, y me gustaría llegar al fondo de ellos.
dh
) debería estar generando los apropiados. Ejecutar dpkg-deb --control
en el archivo deb generados, y la mirada en el recién creado DEBIAN
directorio para postinst
, postrm
archivos.
postrm
script? ¿Tiene la caldera Debhelper?