Debian-Installer
如何在 deblan 包中包含和安裝 debian/package.timer 文件,以及 package.service
我正在創建一個包含服務和一些 shell 腳本的 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 文件,它會被包括在內,但不包括 timer 或 tmpfile 。我希望有一個人可以幫助我。
為了說明,我的一些封包件如下。
你好世界服務
[Unit] Description=Hello world service. [Service] Type=oneshot ExecStart=/bin/echo HELLO WORLD! [Install] WantedBy=default.target
hello-world.timer
[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 <joe.bloggs@jondoe.com> 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"
對於自動計時器支持,您需要
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