deblan 패키지에 package.service와 함께 debian/package.timer 파일을 포함하고 설치하는 방법

deblan 패키지에 package.service와 함께 debian/package.timer 파일을 포함하고 설치하는 방법

저는 서비스와 일부 셸 스크립트가 포함된 debian 패키지를 만들고 있으며 서비스가 주기적으로 호출되도록 /lib/systemd/system 폴더에 타이머를 설치하려고 합니다.

데비안 도움말 가이드에 따르면 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

관련 정보