deb를 사용하여 설치된 시스템 서비스를 자동으로 활성화하시겠습니까?

deb를 사용하여 설치된 시스템 서비스를 자동으로 활성화하시겠습니까?

나는 내 자신의 (자동 생성된) 서버에 설치할 여러 서비스를 구축하고 있습니다. Ubuntu 14.04의 Upstart에서 기본적으로 서비스가 활성화되어 있는 Ubuntu 16.04로 마이그레이션하고 있으며(설치 시 서비스를 시작하지 않으려면 추가 작업을 수행해야 함) systemd를 새로운 기본 서비스 프레임워크로 사용하려고 합니다. .

이 서비스는 내가 직접 만든 deb 패키지를 사용하여 설치됩니다. systemd 단위 사양으로 파일을 --with systemd추가 rules하고 추가하여 deb 생성을 업그레이드했습니다 .package-name.service

제가 발견한 문제는 으로 [Install]섹션을 추가해도 WantedBy=multi-user.target시스템에서 서비스가 시작되지 않는다는 것입니다.

대신 서비스가 설치되고 systemctl status package-name표시됩니다.

● package-name.service - My Service
   Loaded: loaded (/lib/systemd/system/package-name.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

rules내가 시작한 것처럼 내 시스템에는 시스템 재정의가 없습니다 .시스템 페이지를 사용한 데비안 패키징게다가dh_systemd_enable 매뉴얼 페이지나는 사용할 수 있다아니요서비스를 활성화하지 않기로 선택한 경우.

또한 상태 표시를 보면 dh-systemd서비스가 활성화된 것처럼 보이지만(공급업체 사전 설정 비트) 그것만으로는 충분하지 않습니다. 내가 무엇을 놓치고 있나요?

답변1

실제로 아무것도 추가할 필요가 없습니다 override_dh_auto_install.

--with systemd및 설치된 패키지에 (과 사이에 대시 없음)이 필요합니다 .withsystemdrulesdh-systemd

답변2

규칙의 override_dh_auto_install 대상에서 dh_systemd_enable(기본적으로 서비스 실행) 및 dh_systemd_start(실제로 설치 후 시작)를 호출하여 이 문제를 해결했습니다. 따라서 다음과 같습니다.

%:
    dh $@ --with-systemd

override_dh_auto_install:
    dh_auto_install
    dh_systemd_enable || true
    dh_systemd_start || true

답변3

나는 또한이 문제에 직면했습니다. 파일 dh_systemd_enable의 내용에 대해 특정 기대치가 있는 것으로 나타났습니다 foo.service.

187-215행에서 ​​이를 볼 수 있습니다.deb-systemd-helper.

특히 foo.service파일에 섹션이 있고 별칭이 다음과 같지 않은 필드가 [Install]하나 이상 있는지 확인하세요 . 이로 인해 탐지에 필요한 서비스가 호출됩니다. 서비스가 자동으로 시작되도록 하려면 추가해야 합니다 .Aliasfoo.servicedeb-systemd-helper enableWantedBy=multi-user.target

foo.service다음은 내 파일의 약간 수정된 버전입니다.

[Unit]
Description=foo service, foos
After=bar.service
Requires=bar.service

[Service]
ExecStart=/path/to/my/script/foo
Restart=always
RestartSec=5

[Install]
Alias=foo
WantedBy=multi-user.target

몇 가지 디버그 플래그를 활성화하고 Perl 스크립트에 디버그 문을 추가하여 deb-systemd-helper이를 확인할 수 있었습니다. Ubuntu 16.04 시스템에서는 여기에서 찾았습니다 /usr/bin/deb-systemd-helper.

따라서 다음 명령을 반복적으로 실행하고 디버그 문을 추가하면 문제의 원인을 찾을 수 있습니다.

$ sudo DPKG_MAINTSCRIPT_PACKAGE=1 _DEB_SYSTEMD_HELPER_DEBUG=1 deb-systemd-helper enable foo.service

답변4

방금 이 문제가 발생했습니다. 필요한 [Install] 섹션이 있음에도 불구하고 여전히 기본적으로 장치를 활성화하지 않습니다.

해결 방법은 .service 파일의 Windows 끝을 UNIX 끝으로 변환하는 것입니다.

dos2unix my.service

관련 정보