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

14

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

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

Em / var / crash, um relatório de falha spamassassin é 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 logging do dmesg a partir da inicialização. O Amavis dá 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 sem informações adicionais.

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

Muitas perguntas e possíveis soluções foram escritas sobre erros do dpkg e muitas que eu tentei, mas sem nenhuma informação adicional eu não tenho a sensação de estar chegando a lugar nenhum.

Certamente deve haver alguma possibilidade de ler o que está errado ou aumentar o logging para que ele seja registrado?

    
por Requist 17.02.2014 / 19:58

2 respostas

11

Ok, eu encontrei a solução para esse problema. Achei que não consegui aumentar o registro para obter mais dados, os dados já apresentados tinham a chave 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 próxima linha nos diz que o script de pós-instalação não foi concluído 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.

Neste arquivo, sabemos que temos que olhar o código executado pelo configure:

  

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

e depois de algum debugging descobri a linha:

  

su debian-spamd -c "sa-atualização --gpghomedir / var / lib / spamassassin / sa-update-keys \           --importar /usr/share/spamassassin/GPG.KEY "

retornou o código de saída 1 (execute o comando @commandline e use o echo $? ao lado 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. Carregando com / bin / false retorna sem qualquer mensagem, exceto o exitcode 1.

Adicionando -s / bin / sh ao comando resolveu o problema, embora no final eu tenha alterado o shell de login do usuário para ficar em sincronia com futuras atualizações.

    
por Requist 18.02.2014 / 18:22
6

Geralmente, para depurar esses problemas, edite /var/lib/dpkg/info/spamassassin.postinst (ou .preinst , pr .prerm ou .postrm ; dependendo de qual está falhando) e altere #!/bin/sh na linha superior para #!/bin/sh -x (mesma coisa se for bash : basta adicionar -x )

Isso fornecerá a você depuração linha por linha do script de shell, para que você possa dizer onde ele sai com código diferente de zero (fazendo com que a instalação / atualização falhe).

No entanto, provavelmente seria necessário pelo menos algumas habilidades de script de shell para depuração.

    
por Matija Nalis 17.02.2016 / 01:02

Tags