Como depurar o erro de configuração do dpkg na pós-instalação do subprocesso?

17

Resumindo: estou tentando instalar o spamassassin, mas o dpkg retorna apenas com:

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

Tentei encontrar mais informações sobre o que está dando errado, mas não consigo encontrar em nenhum lugar nenhum registro útil.

Em / var / crash, um spamassassin crashreport é gerado, mas isso fornece apenas erros antigos do dpkg e:

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

Seguido pelo registro do dmesg na inicialização. O Amavis comete um erro porque a dependência spamassassin não está configurada.

Eu verifiquei os arquivos de log:

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

mas nenhuma informação adicional.

Eu tentei o dpkg -D com todos os octais possíveis, mas não acho nada útil sobre o que poderia dar errado.

Muitas perguntas e possíveis soluções foram escritas sobre os erros do dpkg e muitas que tentei, mas sem informações adicionais, não sinto que estou chegando a lugar algum.

Certamente deve haver em algum lugar a possibilidade de ler o que está acontecendo de errado ou ativar alguns registros para que sejam registrados?

Solicitar
fonte
Você precisa rolar para cima no seu terminal e ver o erro específico na mensagem que viu. Para depurá-las, você precisa ver qual foi o erro exato que desencadeou isso.
Thomas Ward
deve haver uma descrição no terminal, você consultou /var/log/spamassassin/spamd.log?
21414 kamil
Eu vasculhei todos os logs, depurei e refiz a instalação de várias maneiras diferentes. Tudo para encontrar um pouco mais de informações sobre o erro, mas não consigo encontrar nenhum. O Spamd.log ainda não está sendo criado.
requist

Respostas:

16

Ok, eu encontrei a solução para este problema. Embora eu não tenha conseguido aumentar o registro para obter mais dados, os dados já apresentados tinham a pista para o problema.

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

diz que o dpkg encontrou um erro ao processar o spamassassin durante a execução do configure. A linha seguinte informa que o script de pós-instalação não foi finalizado corretamente.

No diretório / var / lib / dpkg / info , podemos localizar os arquivos de script do dpkg, o arquivo: spamassassin.postinst nos fornece o arquivo de script que gerou o erro.

Dentro deste arquivo, sabemos que precisamos examinar o código executado pelo configure:

if ["$ 1" = "configure"]; então

e depois de alguma depuração, descobri a linha:

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

retornou o código de saída 1 (execute o comando @commandline e use echo $? next para obter o código de saída)

O problema era que o usuário debian-spamd já existia no meu sistema, mas seu shell de login era / bin / false. Suportar com / bin / false retorna sem nenhuma mensagem além do código de saída 1.

Adicionar -s / bin / sh ao comando resolveu o problema, mas no final alterei o shell de login do usuário para ficar sincronizado com futuras atualizações.

Solicitar
fonte
Eu tive um problema semelhante a você. Com o instalador simplesmente falhando. O meu acabou sendo um problema com a instalação da versão mais recente do debian-backports para o wheezy. Aconteceu que eles mudaram o script de pós-instalação para ter uma chamada 'su - $ OWNER -c "sa-update ...', que executou um shell de logon completo em / bin / sh, incompatível com nosso / etc / profile e /etc/profile.d arquivos removendo o '-' tornando-o "su $ OWNER -c ...." corrigido para mim
Vagnerr
Eu não tenho problema exato, mas suas dicas de depuração me ajudaram muito! obrigado!
chaosguru 6/09/17
9

Geralmente, para depurar esses problemas, você deve editar /var/lib/dpkg/info/spamassassin.postinst(ou .preinst, pr .prermou .postrm; dependendo de qual deles está falhando) e alterar #!/bin/shna linha superior para #!/bin/sh -x(a mesma coisa se for bash: basta adicionar -x)

Isso forneceria a depuração linha a linha do script de shell, para que você pudesse dizer onde ele sai com código diferente de zero (causando falha na instalação / atualização).

Provavelmente, exigiria pelo menos algumas habilidades de script de shell para depuração.

Matija Nalis
fonte