하위 프로세스 설치 후 dpkg 구성 오류를 디버깅하는 방법은 무엇입니까?


17

한마디로 : spamassassin을 설치하려고하는데 dpkg는 다음과 같이 반환합니다.

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

무엇이 잘못되었는지에 대한 자세한 정보를 찾으려고 노력했지만 유용한 로깅을 찾을 수 없습니다.

/ var / crash에서 spamassassin crashreport가 생성되지만 오래된 dpkg 오류 만 발생합니다.

 Start-Date: 2014-02-17  19:18:13
 Commandline: apt-get install spamassassin
AptOrdering:
 spamassassin: Configure
 amavisd-new-postfix: Configure

시작시 dmesg 로깅이 이어집니다. 종속성 spamassassin이 구성되지 않았으므로 Amavis에서 오류가 발생합니다.

로그 파일을 확인했습니다.

apt history.log
apt term.log
dpkg.log
syslog.log

추가 정보는 없습니다.

가능한 모든 8 진수로 dpkg -D를 시도했지만 무엇이 잘못 될 수 있는지에 대한 유용한 정보는 없습니다.

dpkg 오류에 대해 많은 질문과 가능한 해결책이 작성되었으며 많은 시도를했지만 추가 정보가 없으면 어디서나 느끼는 느낌이 없습니다.

확실히 무엇이 잘못되고 있는지 읽거나 로깅을하기 위해 로그를 걸 수있는 가능성이 있어야합니까?


터미널에서 위로 스크롤하여 본 메시지에서 특정 오류를 확인해야합니다. 이를 디버깅하려면 이를 발생시킨 정확한 오류가 무엇인지 확인해야합니다 .
토마스 워드

터미널에 설명이 있어야합니다. /var/log/spamassassin/spamd.log를 살펴 보셨습니까?
kamil

여러 가지 방법으로 모든 로그를 정리하고 제거하고 설치를 다시 실행했습니다. 모두 오류에 대한 정보를 조금 더 찾았지만 찾을 수 없습니다. Spamd.log가 아직 생성되지 않았습니다.
Requist

답변:


16

좋아, 나는이 문제에 대한 해결책을 찾았다. 더 많은 데이터를 얻기 위해 로깅을 할 수 없다고 생각했지만 이미 제시된 데이터는 문제의 단서가되었습니다.

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

configure를 실행하는 동안 dpkg에서 spamassassin을 처리하는 동안 오류가 발생했습니다. 다음 줄은 설치 후 스크립트가 올바르게 완료되지 않았 음을 알려줍니다.

에서 의 / var / lib 디렉토리 / dpkg를 / 정보 디렉토리 우리는 때 dpkg의 스크립트 파일을 찾을 수 있습니다, 파일 : spamassassin.postinst 우리에게 오류를 생성 한 스크립트 파일을 제공합니다.

이 파일 내에서 configure에 의해 실행되는 코드를 확인해야합니다.

[ "$ 1"= "configure"]이면; 그때

그리고 디버깅 후 나는 그 줄을 발견했다.

su debian-spamd -c "sa-update --gpghomedir / var / lib / spamassassin / sa-update-keys \ --import /usr/share/spamassassin/GPG.KEY"

종료 코드 1을 리턴했습니다 (@commandline 명령을 실행하고 종료 코드를 얻으려면 다음에 echo $?를 사용하십시오).

문제는 debian-spamd 사용자가 이미 내 시스템에 존재했지만 로그인 셸이 / bin / false라는 것입니다. / bin / false를 사용하면 메시지없이 종료 코드 1을 반환합니다.

명령에 -s / bin / sh 를 추가 하면 문제가 해결되었지만 결국 사용자의 로그인 쉘을 변경하여 향후 업데이트와 동기화 상태를 유지했습니다.


나는 너에게 비슷한 문제가 있었다. 설치 프로그램이 평평하게 실패합니다. 광산은 wheezy를 위해 debian-backports의 최신 버전을 설치하는 데 문제가있는 것으로 나타났습니다. 설치 후 스크립트를 'su-$ OWNER -c "sa-update ...'호출로 변경하여 전체 로그인 쉘 exec를 / bin / sh에 / bin / sh와 / etc / profile과 호환되지 않는 것으로 나타났습니다. 및 /etc/profile.d 파일을 제거하여 '-'를 제거하면 "su $ OWNER -c ...."가됩니다.
Vagnerr

나는 정확한 문제는 없지만 디버깅 힌트가 많은 도움이되었습니다! 감사!
chaosguru

9

일반적으로 이러한 문제를 디버깅하려면 편집 /var/lib/dpkg/info/spamassassin.postinst(또는 .preinst, pr .prerm또는 .postrm; 어떤 것이 실패했는지에 따라)하고 #!/bin/sh맨 윗줄에서 #!/bin/sh -x( bash대신에 동일한 경우 : 그냥 추가 -x)

그러면 쉘 스크립트의 라인 별 디버그가 제공되므로 0이 아닌 코드로 종료되는 위치를 알 수 있습니다 (설치 / 업그레이드 실패).

그래도 디버깅하려면 적어도 일부 쉘 스크립팅 기술이 필요할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.