Debian-Installer

如何在 deblan 包中包含和安裝 debian/package.timer 文件,以及 package.service

  • April 13, 2021

我正在創建一個包含服務和一些 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

引用自:https://unix.stackexchange.com/questions/592349