postinst 유지 관리자 스크립트는 설치 시 시스템 단위 파일이 자동으로 시작되는 것을 방지합니다.

postinst 유지 관리자 스크립트는 설치 시 시스템 단위 파일이 자동으로 시작되는 것을 방지합니다.

저는 시스템 단위 파일, 특히 *.service파일을 설치하기 위해 작은 데비안 패키지를 만들고 있습니다.

내 패키지는 다음과 같습니다.

myservice
      | 
      |--debian
            |- comapat
            |- preinst
            |- postinst
            |- rules
            |- myservice.service

패키지를 설치하면 systemd 서비스가 자동으로 비활성화되고 시작되지 않습니다.

설치 후 바로 systemctl status myservice표시

root@ubuntu-xenial:~# systemctl status myservice
  ● myservice.service - My Service - echos output and says when it started
  Loaded: loaded (/lib/systemd/system/myservice.service; disabled; vendor preset: enabled)
  Active: inactive (dead)

그러나 패키지를 설치할 때postinst스크립트 없음, systemd 서비스는 자동으로 활성화되고 설치 후 시작됩니다.

root@ubuntu-xenial:~# systemctl status myservice
● myservice.service - MyService - echos output and says when it started
Loaded: loaded (/lib/systemd/system/myservice.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-02-09 15:06:36 UTC; 10s ago
Main PID: 5024 (sh)
Tasks: 2
Memory: 172.0K
  CPU: 1ms
CGroup: /system.slice/myservice.service
       ├─5024 /bin/sh -c echo 'myservice.service started' && echo $(date +%s) && sleep infinity
       └─5026 sleep infinity

내 postinst가 "작고 멍청"하기 때문에 혼란스럽습니다.

#!/bin/sh -e
# POSTINST script for myservice
set -e

echo "\033[36m HI I'M A POSTINST SCRIPT `date +"%s"` \033[39m"

postinst가 있으면 systemd 서비스의 "자동 활성화 및 시작"이 무시되는 이유는 무엇입니까?

debhelper의 어떤 부분이 이것을 처리하며 무엇이 빠졌습니까?

또는postinst설치 시 서비스를 시작하고 실행하려면 관리자 스크립트에 무엇을 추가 해야 합니까 ?


참고: 내 환경은 virtualbox 공급자가 있는 작은 방랑 상자입니다. 나는 사용하고있다ubuntu-xenial64 길 잃은 상자. 환경이 이에 영향을 미치는지 확실하지 않습니다.

답변1

debhelper다음에 자리 표시자를 추가 해야 합니다 postinst.

#DEBHELPER#

그래서 당신은 postinst다음과 같아야합니다

#!/bin/sh
# POSTINST script for intera
set -e

echo "\033[36m HI I'M A POSTINST SCRIPT `date +"%s"` \033[39m"

#DEBHELPER#

exit 0

포함하지 않으면 debhelper자동으로 생성된 postinst조각이 관리자 스크립트에 추가되지 않습니다. 스크립트가 전혀 없으면 postinst전체 스크립트가 생성되지만 자체 버전이 있으면 자리 표시자만 변경됩니다.

관련 정보