데비안 패키지 설치에서 systemd.service를 활성화하기위한 기본 / 관용적 방법


5

시스템 서비스를 생성하는 소프트웨어 용으로 제작 한 사용자 정의 데비안 패키지가 있습니다. 설치시 해당 패키지를 설치하여 서비스를 활성화 / 시작할 수있는 기본 / 아이디어 방식은 무엇입니까?

내가 한 것은 postinst스크립트에 다음 세 줄을 추가하는 것이 었습니다 .

systemctl --system daemon-reload
systemctl enable my_service.service
systemctl start my_service.service

초기 이미지 생성 에이 패키지를로드 할 때까지 정상적으로 작동하지 않았지만 그 과정에서 정상적으로 설정되지 않은 많은 환경 설정 debootstrap이 필요한 systemctl것으로 나타 났습니다 .


1
RPM과 관련하여 비슷한 질문이 있습니다. yum 업그레이드가 작동하는 방식 때문에 RPM 설치 후 스크립트에서 시스템 시작을 포기했습니다. 먼저 새 패키지를 설치 한 다음 이전 패키지를 제거합니다. 즉, 서비스가 시작된 다음 업그레이드를 수행하면 중지됩니다.
마크 라 카타

최대 헤드 주셔서 감사합니다 @MarkLakata, 당신은 잠재적으로 나에게 문제를 많이 저장
haventchecked

답변:


1

비슷한 상황을보고 있습니다. debootstrap rootfs에서 서비스를 구성하고 싶습니다. systemctl enable단순히 [Install]유닛 파일 의 섹션 에서 대상을 읽고 올바른 심볼릭 링크를 만드는 것 같습니다 . 따라서 어떤 서비스에서 어떤 서비스를 시작해야하는지 알고 있다면 올바른 심볼릭 링크를 만드는 것이 정답 일 것입니다. 예 :

ln -s /etc/systemd/system/multi-user.target.wants/ssh.service \
      /lib/systemd/system/ssh.service

debootstrap chroot에 설치할 때 다른 두 단계 ( daemon-reloadstart)를 원하지 않지만 문제는 debootstrap env에있을 때 symlink를 수행하는 방법과 그렇지 않으면 정상적인 방법입니다.

debootstrap 편집

그것이 내가 또한 사용하고 공교롭게도 debootstrap내가 발견 한 systemctl enable호출이 너무 오래 호출 사용자가 그대로 잘 작동 root합니다 (피하기 위해 Failed to connect to bus. 경고) daemon-reloadstart당신이 라이브로하지 않은 이후의 chroot에서 설치 아마 중에 이해가되지 않습니다 환경. 따라서 postinstchroot를 감지하고 해당 줄을 건너 뛰고 싶을 것입니다. 또는 env 변수를 설정하거나 설치 관리자 스크립트가 읽을 수있는 플래그를 전달하십시오.

IM_DEBOOTSTRAPPING=yes dpkg -i mypackage.deb  # tells postinst to skip systemctl start
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.