私はサービスといくつかのシェルスクリプトを含むdebianパッケージを作成しており、サービスが定期的に呼び出されるように/ lib / systemd / systemフォルダにタイマーをインストールしたいと思います。
Debian ヘルプガイドによると https://manpages.debian.org/testing/debhelper/dh_systemd_enable.1.en.html これは、debianフォルダにpackage.timerファイルとpackage.serviceファイルを作成するだけで達成でき、ビルド時に自動的にパッケージに含まれます(sudo debuild -us -uc -d)。
ビルドすると、タイマーファイルは含まれず、サービスのみが含まれてインストールされます。詳細はpackage.socketファイルを追加すると含まれますが、タイマーやtmpファイルは含まれません。誰かが私を助けることを願っています。
説明するために、私のパッケージファイルのいくつかは以下にあります。
こんにちは。world.service
[Unit]
Description=Hello world service.
[Service]
Type=oneshot
ExecStart=/bin/echo HELLO WORLD!
[Install]
WantedBy=default.target
こんにちはタイマーです。
[Unit]
Description=Timer for periodic execution of hello-world service.
[Timer]
OnUnitActiveSec=5s
OnBootSec=30s
[Install]
WantedBy=timers.target
制御ファイル
Source: hello-world
Maintainer: Joe Bloggs <[email protected]>
Section: misc
Priority: optional
Standards-Version: 1.0.0
Build-Depends: debhelper (>= 9), dh-systemd (>= 1.5)
Package: hello-world
Architecture: amd64
Depends:
Description:
Hello world test app.
ルールファイル
#!/usr/bin/make -f
%:
dh $@ --with=systemd
override_dh_auto_build:
echo "Not Running dh_auto_build"
override_dh_auto_install:
echo "Not Running dh_auto_install"
override_dh_shlibdeps:
echo "Not Running dh_shlibdeps"
override_dh_usrlocal:
echo "Not Running dh_usrlocal"
答え1
自動タイマーをサポートするには、次のものが必要です。dh_installsystemd
、これはdebhelper互換性レベル11以上で利用可能です。レベル12以上を使用する必要があります。ファイルに割り当てますcontrol
。
Build-Depends: debhelper-compat (= 12)
そのcompat
ファイルを削除し、rules
明示的な順序を省略するようにファイルを変更しますsystemd
。
%:
dh $@
Debhelper 互換性レベル 12 は、Debian 10 以降と Debian 9 でバックポート経由で使用できます。以前のレベルを使用する必要がある場合は、サポートファイルを手動でインストールする必要があります。存在するanacron
:
override_dh_auto_install:
...
install -D -m 644 debian/anacron.timer debian/anacron/lib/systemd/system/anacron.timer
答え2
このタイマーと一緒に2つのサービスをインストールする必要がある場合は、以下でそれを上書きする必要がありますoverride_dh_installinit
。
override_dh_installinit:
dh_installinit --name=anacron
dh_installinit --name=anacron-service2
install -D -m 644 debian/anacron.timer > debian/anacron/lib/systemd/system/anacron.timer