モノのアプリケーションをsystemdサービスとして実行するようにパッケージ化しようとしています。
私はここの指示に従いました:https : //wiki.debian.org/Teams/pkg-systemd/Packaging
私は、debian制御ファイルにdh-systemd(> = 1.5)を追加しました。
以下のように、ルールファイルに--with = systemdを追加しました。
%:
dh $@ --with=cli --with=systemd
私のサービスファイルをmypackage.serviceという名前のdebianフォルダーに追加しました。その内容は次のとおりです。
[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
これはいくつかの理由で私を混乱させています
- これらの警告は、systemdに置き換えられた古いシステムであるinit.dに関するものです。これらのエラーと警告は間違っているのですか、パッケージを誤って構成したため、debuildはinit.dを使用していると思いますか?
- --with = systemdがこれらのスクリプトを作成してくれるという印象を受けました。
更新
生成される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
)が適切なものを生成しているはずです。dpkg-deb --control
生成されたdebファイルで実行し、新しく作成されたDEBIAN
ディレクトリでpostinst
、postrm
ファイルを探します。
postrm
スクリプトには何が含まれていますか?debhelperボイラープレートはありますか?