deblan パッケージに package.service とともに debian/package.timer ファイルを含めてインストールする方法

deblan パッケージに package.service とともに debian/package.timer ファイルを含めてインストールする方法

私はサービスといくつかのシェルスクリプトを含む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

関連情報