서비스 업데이트의 대안

서비스 업데이트의 대안

*.deblink 을 사용하여 패키지에서 서비스를 설치하고 싶습니다 update-alternatives. 그런 다음 심볼릭 링크를 활성화/시작합니다. 기존 데비안 아카이브에 이에 대한 예가 있습니까? 그렇지 않다면 사람들은 무엇을 합니까?

update-alternatives동일한 컴퓨터에 여러 버전의 소프트웨어를 배포한 다음 이를 사용하여 실행할 버전을 선택하고 싶기 때문에 이렇게 합니다 .

update-alternatives서비스를 제공하기 위해 debhelper를 사용하고 의존하는 경우 일반적인 제어 파일은 다음과 같습니다.

# myapp99.postinst
update-alternatives --install \
    /lib/systemd/system/myapp.service myapp \
    /lib/systemd/system/myapp99.service 99

#DEBHELPER#
# myapp99.prerm
update-alternatives --remove myapp lib/systemd/system/myapp99.service

#DEBHELPER#

그런데 문제는 #DEBHELPER#이 작업을 마친 후에도 계속 실행된다는 것입니다.myapp.servicepostrmupdate-alternatives --remove

postrm에서 프로그램을 update-alternatives --remove이동할 수 있지만 #DEBHELPER#사용하지 않는 오래된 패키지를 지우면 프로그램이 중지/비활성화되는 문제가 여전히 남아 있습니다 myapp.service. 내가 고려하지 않은 다른 것들도 있을 것이라고 확신합니다.

기존 데비안 아카이브에 내가 원하는 것을 할 수 있는 패키지가 있나요?

저는 이 작업을 하지 않고 이 작업을 거의 고려하고 있습니다 debhelper. 설치하기 전에 링크가 존재하는지 확인하고 새 링크인 경우 활성화하십시오. 삭제 후 링크가 존재하는지 확인하고 해당 서비스의 마지막 공급자인 경우에만 중지/비활성화/차단하세요. 그게 유일한 방법이라면 괜찮습니다... 저는 바퀴를 재발명하고 버그를 도입하고 싶지 않습니다.

답변1

데비안 코드 검색 쇼비슷한 작업을 수행하는 유일한 패키지는 다음과 같습니다.iptables-persistent, 그리고 나는 그것이 당신이 원하는 것을 하려고 노력하고 있다는 느낌이 들지 않습니다.

귀하의 제안을 처리할 수 있는 확실한 방법이 없습니다. 저는 다르게 처리하겠습니다.

  • 한 가지 가능성은 여러 서비스를 전혀 제공하지 않는 것입니다. 대신 서비스를 제공하는 공통 패키지를 구축하고 해당 서비스가 대안을 사용하여 처리된 바이너리를 사용하도록 하는 것입니다.

  • 또 다른 접근 방식은 여러 서비스를 제공하되 이를 대안으로 설정하지 않고 관리자가 시스템 기능을 사용하여 활성화할 인스턴스를 선택하도록 하는 것입니다.

후자의 경우 dh_installsystemd --no-enable(에서) 유용할 것입니다 debian/rules.

관련 정보