TL;박사;
누군가가 다음을 사용하여 deb
내 패키지를 설치하는 경우sudo dpkg -i example.deb
postinst
deb
패키지에 일부 UI 종속성이 있지만 대상 시스템이 Ubuntu 서버라고 가정해 보겠습니다 .
달리기는 sudo dpkg -i example.deb
다음을 유발할 수 있습니다.
(Reading database ... 59708 files and directories currently installed.)
Preparing to unpack ./example.deb ...
Unpacking example (13) over (11) ...
dpkg: dependency problems prevent configuration of example:
example depends on libappindicator1; however:
Package libappindicator1 is not installed.
dpkg: error processing package example (--install):
dependency problems - leaving unconfigured
Processing triggers for mime-support (3.64ubuntu1) ...
Errors were encountered while processing:
example
결과는 - 추출된 패키지(컨텐츠를 찾을 수 있는 곳 /opt
)이고 종료 코드는 1
( echo $?
)이지만 postinst
스크립트가 실행되지 않습니다. 소프트웨어는 UI 없이 작동하므로 별 문제가 되지 않았습니다(UI가 있는 설치 프로그램과 UI가 없는 설치 프로그램 두 개를 만들기 전까지는).
문제는 내 스크립트 postinst
에 몇 가지 중요한 단계가 있지만 전혀 실행되지 않는다는 것입니다.
어쩌면 이와 같은 오류를 처리하기 위한 일종의 롤백 프로세스나 방법이 필요할 수도 있지만, 사소해 보이지만 그렇게 할 방법을 찾을 수 없습니다.
또 다른 방법은 필요한 단계를 수행하는 것입니다.뒤쪽에포장을 풀고앞으로종속성을 해결했지만 비슷한 것을 찾지 못했습니다.
분명히 여기에 기본적인 것이 빠져 있습니다. 어떤 아이디어가 있나요?
postinst
편집: 더 중요한 것은 누락된 패키지가 나중에 나타나는 경우 실제로 수행된 적이 없기 때문에 설치도 불완전/손상된다는 것입니다 . 간단해 보여서 간단한 해결책이 있을 줄 알았는데 찾을 수가 없네요.
답변1
postinst
종속성이 없거나 구성되지 않은 경우 패키지는 실행되지 않습니다 . 너할 수 있다설정을 통해 속임수를 쓰려면 preinst
(패키지를 풀기 전에 이런 일이 발생하더라도) GUI 종속성을 "권장"으로 옮기는 것이 더 나은 접근 방식이라고 생각합니다. 패키지는 UI 종속성 없이 작동할 수 있으므로 이에 의존해서는 안 되지만 이를 권장하면 패키지가 존재하지 않는 경우 구성할 수 있습니다.