누군가가 일부 소프트웨어를 설치, 업그레이드 또는 제거하는 데 문제가 있을 때마다 이 메시지가 여러 번 표시되지만 알고 싶습니다.무슨 뜻이에요, 그리고 더 중요한 것은 그것을 해결할 수 있습니까?
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
(위 내용은 예시일 뿐, 실제 질문은 아닙니다)
답변1
메시지는 보편적입니다. 이는 단지 dpkg
어떤 이유로 인해 인스턴스/호출이 실패했음을 의미합니다. 이유나 해결 방법을 설명하지 않으며 해결 방법에 대한 힌트도 제공하지 않습니다. 진단 메시지로는 쓸모가 없습니다.apt
apt-get
설치 완료를 방해하는 실제 오류를 찾으려면 메시지 앞의 줄(때로는 꽤 많이)을 읽어야 합니다.
응, 그런데 어떻게 고치지?
그것을 고칠 수 있는 유일한 방법은 없습니다. 이런 일이 발생하는 데는 여러 가지 이유가 있으며, 이를 하나의 문서에 모두 나열하려는 것은 어리석은 일입니다. 모든 상황은 해당 패키지/환경에 따라 거의 고유합니다.
그러나 구원이 있습니다. 이 메시지가 표시된다는 사실은 이 메시지 앞의 줄에 더 관련 있는 정보가 있을 수 있음을 의미합니다. 설명을 위해 다음 예를 사용하겠습니다.
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
이제 문제를 찾으려면 다음을 거꾸로 읽어야 합니다.
E: Sub-process /usr/bin/dpkg returned an error code (1)
나에게 유용한 것을 말하지 않았습니다. 그러니 계속하세요.Errors were encountered while processing: mongodb-10gen
어떤 패키지에 문제가 있는지 알려주세요. 유용하지만 충분하지 않습니다.subprocess installed post-installation script returned error exit status 100
postinst
: 실패한 스크립트가 설치 후 실행되는 스크립트임을 알려줍니다 . 어떤 경우에는 이것이 편리할 수 있지만 이 경우에는 그렇지 않습니다.dpkg: error while cleaning up:
여기에는 유용한 것이 없습니다.invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
빙고! 이는invoke-rc.d
init 스크립트를 제어하는 바이너리가 대부분의 데비안 계열 시스템에서 실패함을 알려줍니다 . 스크립트를 찾을 수 없어/etc/init.d/mongodb
실패했습니다 . 이것은 좋지 않습니다. 다시 작동하려면 이를 생성하거나 다른 곳에서 복사해야 합니다. 패키지를 다시 설치하는 것도file not found
오류를 해결하는 방법인 경우가 많습니다.이 경우 스크립트를 삭제한 사람이 우리일 가능성이 높으므로 버그를 보고할 필요는 없습니다. 하지만 파일을 건드리지 않았다고 확신하는 경우(확인해야 함
debsums -sla
) 버그를 보고하세요.
그렇다면 도움을 받으려면 정확히 무엇이 필요합니까? 이상적으로는 문제의 전체 출력입니다. "package1 package2 ..." sudo dpkg -C
의 출력 에 문제의 모든 패키지가 포함되어 있는 경우에도 도움이 됩니다.sudo apt-get check
apt-cache policy package1 package2...