如何在 deblan 包中与 package.service 一起包含和安装 debian/package.timer 文件

如何在 deblan 包中与 package.service 一起包含和安装 debian/package.timer 文件

我正在创建一个 debian 包,其中包含一个服务和一些 shell 脚本,并且还想在 /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 。我希望有一个人可以帮助我。

为了便于说明,我的一些包文件如下。

你好世界.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

相关内容