次の質問があります。
バイナリファイルにのみアクセスできます。バイナリから完全に自動化されたパッケージを作成しようとしています.deb
。パッケージ化しましたが、サービスファイルを除いて機能します。
debianフォルダにサービスファイルを作成しました。
hello
-- hello
-- debian/hello.service
私のルールファイルは次のとおりです。
$ cat debian/rules
#!/usr/bin/make -f
%:
dh $@
override_dh:install:
dh_install hello usr/bin
パッケージは作成されていますが、サービスは開始されず、以下にサービスファイルも作成されません/etc/systemd/system/
。
postinst ファイルは次のようになります#!/bin/bash set -e
if [ $1 = configure] || [$1 = abort-upgrade]; then
if [ -x /etc/init.d/hello ]; then
update-rc.d hello defaults >/dev/null
ベストアンサー1
dh_installsystemd
適切なシステムサービスヘルパー(互換性レベル12)を呼び出す必要があります。
これを達成する最も簡単な方法は、dh
シーケンスに依存することです。ビルドするものがなくても正しいことを行います。
#!/usr/bin/make -f
%:
dh $@
override_dh_install:
dh_install hello usr/bin
これにより、systemdヘルパーを含む他のすべてのヘルパーが正しい順序で実行されます。
debhelperの互換性レベルが10未満の場合は、systemdシーケンスを明示的に有効にする必要があります。
%:
dh $@ --with systemd
(サービスファイルは./lib/systemd/system
の代わりに.で終わります。/etc/systemd/system
)
次のように作成すると、上書きを完全に削除することもできます。
hello usr/bin
debian/install
(またはdebian/hello.install
パッケージ名がと仮定すると)hello
。