Come eseguire il debug di dpkg configura l'errore nel sottoprocesso post-installazione?


17

In breve: sto cercando di installare spamassassin ma dpkg ritorna solo con:

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

Ho cercato di trovare ulteriori informazioni su cosa non va, ma non riesco a trovare da nessuna parte alcuna registrazione utile.

In / var / crash viene generato un rapporto crashassassin di spam ma questo dà solo vecchi errori dpkg e:

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

Seguito da dmesg logging all'avvio. Amavis dà un errore perché lo spamassassin delle dipendenze non è configurato.

Ho controllato i file di registro:

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

ma nessuna informazione aggiuntiva.

Ho provato dpkg -D con tutti i possibili ottali ma non trovo nulla di utile su cosa potrebbe andare storto.

Molte domande e possibili soluzioni sono state scritte sugli errori di dpkg e molte le ho provate, ma senza ulteriori informazioni non ho la sensazione di trovarmi da nessuna parte.

Sicuramente ci deve essere da qualche parte la possibilità di leggere cosa non va o di avviare un po 'di log in modo che venga registrato?


Devi scorrere verso l'alto nel tuo terminale e vedere l'errore specifico, nel messaggio che hai visto. Per eseguire il debug di questi, devi vedere quale errore esatto ha causato questo.
Thomas Ward

dovrebbe esserci una descrizione nel terminale, hai guardato in /var/log/spamassassin/spamd.log?
Kamil,

Ho analizzato tutti i registri, ho eliminato, ho rifatto l'installazione in molti modi diversi. Tutto per trovare un po 'più informazioni sull'errore, ma non riesco a trovarne. Spamd.log non è stato ancora creato.
Requist

Risposte:


16

Ok, ho trovato la soluzione per questo problema. Sebbene non fossi in grado di avviare il log per ottenere più dati, i dati già presentati avevano la chiave del problema.

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

dice che dpkg ha riscontrato un errore durante l'elaborazione di spamassassin durante l'esecuzione di configure. La riga successiva ci dice che lo script post-installazione non è stato completato correttamente.

Nella directory / var / lib / dpkg / info possiamo individuare i file di script di dpkg, il file: spamassassin.postinst ci fornisce il file di script che ha generato l'errore.

All'interno di questo file sappiamo che dobbiamo guardare il codice eseguito da configure:

if ["$ 1" = "configure"]; poi

e dopo un po 'di debug ho scoperto la linea:

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

codice di uscita restituito 1 (eseguire il comando @commandline e utilizzare echo $? next per ottenere il codice di uscita)

Il problema era che l'utente debian-spamd esisteva già sul mio sistema ma la sua shell di accesso era / bin / false. In caso di sofferenza con / bin / false si ritorna senza alcun messaggio ma exitcode 1.

L'aggiunta di -s / bin / sh al comando ha risolto il problema, ma alla fine ho modificato la shell di accesso dell'utente per rimanere in sincronia con gli aggiornamenti futuri.


Ho avuto un problema simile a te. Con il programma di installazione semplicemente in errore. Il mio si è rivelato essere un problema con l'installazione dell'ultima versione di debian-backport per wheezy. Si è scoperto che hanno cambiato lo script post-installazione in modo da avere una chiamata 'su-$ OWNER -c "sa-update ...' che eseguiva una shell di login completa su / bin / sh che era incompatibile con il nostro / etc / profilo e /etc/profile.d. rimuovendo '-' rendendolo "su $ OWNER -c ...." risolto il problema per me
Vagnerr,

Non ho problemi esatti ma i tuoi suggerimenti per il debug mi hanno aiutato molto! Grazie!
Chaosguru,

9

Generalmente per eseguire il debug di tali problemi, è necessario modificare /var/lib/dpkg/info/spamassassin.postinst(o .preinst, pr .prermo .postrm; a seconda di quale non funziona) e passare #!/bin/shalla riga superiore in #!/bin/sh -x(stessa cosa se bashinvece: basta aggiungere -x)

Ciò ti fornirebbe il debug riga per riga dello script della shell, in modo da poter dire dove esce con un codice diverso da zero (causando il fallimento dell'installazione / aggiornamento).

Tuttavia, probabilmente richiederebbe almeno alcune abilità di scripting della shell per eseguire il debug.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.