preinst 및 prerm 스크립트는 어떤 서비스를 중지해야 합니까?

preinst 및 prerm 스크립트는 어떤 서비스를 중지해야 합니까?

데비안 매뉴얼(https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-maintscripts)은 다음과 같이 말합니다 preinst.

많은 "preinst" 스크립트는 설치 또는 업그레이드가 완료될 때까지 업그레이드 중인 패키지에 대한 서비스를 중지합니다.

내용은 다음과 같습니다 prerm.

이 스크립트는 일반적으로 패키지와 관련된 모든 데몬을 중지합니다.

내가 이해하는 바에 따르면 업그레이드는 prerm이전 패키지와 preinst새 패키지를 모두 호출하며 패키지가 제거된 경우에만 호출됩니다 prerm.

preinst그렇다면 서비스가 포함된 데비안 패키지를 만드는 경우 를 사용하는 것을 선호할 만한 이유가 있습니까 prerm? 아니면 둘 다 필요합니까?

답변1

귀하가 링크한 문서는 FAQ이며, 관련성이 있다고 해서 반드시 신뢰할 수 있는 것으로 간주되는 것은 아닙니다(차이가 미묘할 수 있고 불일치가 실제로는 버그임에도 불구하고). 권위 있는 문서는 데비안 정책 매뉴얼입니다.전체 장은 관리자 스크립트에 전념합니다.. 읽기가 쉽지 않기 때문에,위키의 유용한 다이어그램관리자 스크립트 간의 관계를 설명합니다.

기본적으로 유일한 스크립트는필요일치하는 패키지에서 서비스를 중지하는 것은 prerm지적한 대로 패키지가 업그레이드될 때뿐만 아니라 패키지가 제거될 때에도 이 스크립트가 호출됩니다. 어떤 경우에는 prerm설치된 패키지에 대한 스크립트를 기본적으로 사용하는 것이 중요합니다 . 업그레이드하기 전에 실패하면 패키징 시스템도 업그레이드된 prerm스크립트를 시도합니다.

preinst업그레이드 중에 항상 발생하며 prerm실행 중에는 서비스를 중지해야 합니다. 확실히 하기 위해 일부 패키지의 preinst스크립트는 서비스를 다시 중지하려고 시도합니다.mysql-server-5.6그리고timidity, 그러나 많지는 않습니다.

따라서 요약하면 에서 서비스를 중지해야 하며 prerm에서도 이 작업을 수행할 수 있습니다 preinst(실제로 꼭 필요한 것은 아니지만). preinst이 작업을 선호해서는 안 되며 prerm두 작업을 모두 수행할 필요도 없습니다. 나는 단지 prerm.

(엄밀히 말하면, 정책 매뉴얼은 현재 관행을 정의하기보다는 문서화한다는 점에서 규정적이라기보다는 설명적이라는 점을 분명히 해야 합니다. 따라서 생각만큼 권위가 없으며 실무는 기록하기 전에 발전하지만 이 특별한 경우에는 전략은 prerm업그레이드가 필요한지 파악하는 것이므로 몇 가지 영리한 방법을 시도하고 나중에 스크립트가 서비스를 다시 시작할 수 있을 때까지 서비스를 실행 상태로 두어 서비스 가동 중지 시간을 줄이는 것입니다.

관련 정보