Wie Debuggen von Dpkg-Konfigurationsfehler in Unterprozess nach der Installation?

17

Kurz gesagt: Ich versuche, Spamassassin zu installieren, aber dpkg gibt nur Folgendes zurück:

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

Ich habe versucht, mehr Informationen zu finden, aber ich kann nirgendwo eine nützliche Protokollierung finden.

In / var / crash wird ein Spamassassin-Absturzbericht generiert, der jedoch nur alte dpkg-Fehler enthält und:

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

Gefolgt von der dmesg-Protokollierung beim Start. Amavis gibt einen Fehler aus, da Abhängigkeits-Spamassassin nicht konfiguriert ist.

Ich habe die Logdateien überprüft:

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

aber keine zusätzlichen Informationen.

Ich habe dpkg -D mit allen möglichen Oktalen ausprobiert, finde aber nichts Nützliches darüber, was schief gehen könnte.

Viele Fragen und mögliche Lösungen wurden über dpkg-Fehler geschrieben und viele habe ich versucht, aber ohne zusätzliche Informationen habe ich nicht das Gefühl, irgendwo hin zu kommen.

Sicherlich muss es irgendwo eine Möglichkeit geben, zu lesen, was falsch läuft, oder eine Protokollierung zu starten, damit es protokolliert wird?

Requist
quelle
Sie müssen in Ihrem Terminal nach oben scrollen und den spezifischen Fehler in der Nachricht sehen, die Sie gesehen haben. Um diese zu debuggen, müssen Sie den genauen Fehler ermitteln, der dies ausgelöst hat.
Thomas Ward
Es sollte eine Beschreibung im Terminal geben. Haben Sie in /var/log/spamassassin/spamd.log nachgesehen?
Kamil
Ich habe alle Protokolle durchgearbeitet, die Installation gelöscht und auf viele verschiedene Arten wiederholt. Alle, um ein bisschen mehr Informationen über den Fehler zu finden, aber ich kann keine finden. Spamd.log wird noch nicht erstellt.
Requist

Antworten:

16

Ok, ich habe die Lösung für dieses Problem gefunden. Obwohl ich die Protokollierung nicht ankurbeln konnte, um mehr Daten zu erhalten, hatten die bereits präsentierten Daten den Anhaltspunkt für das Problem.

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

Laut dpkg ist beim Ausführen von configure ein Fehler beim Verarbeiten von Spamassassin aufgetreten. In der nächsten Zeile erfahren wir, dass das Skript nach der Installation nicht korrekt ausgeführt wurde.

Im Verzeichnis / var / lib / dpkg / info finden wir die Skriptdateien von dpkg. Die Datei: spamassassin.postinst gibt uns die Skriptdatei, die den Fehler erzeugt hat.

In dieser Datei müssen wir uns den Code ansehen, der von configure ausgeführt wird:

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

und nach einigem Debuggen fand ich die Zeile heraus:

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

Exit-Code 1 zurückgegeben (Befehl @commandline ausführen und mit echo $? next den Exit-Code abrufen)

Das Problem bestand darin, dass der Benutzer debian-spamd auf meinem System bereits vorhanden war, seine Anmeldeshell jedoch / bin / false lautete. Wenn Sie mit / bin / false klagen, wird nur der Exitcode 1 zurückgegeben.

Das Hinzufügen von -s / bin / sh zum Befehl löste das Problem, obwohl ich am Ende die Login-Shell des Benutzers geändert habe, um mit zukünftigen Updates synchron zu bleiben.

Requist
quelle
Ich hatte ein ähnliches Problem mit dir. Mit dem Installer einfach pauschal ausfallen. Meins stellte sich als Problem bei der Installation der neuesten Version von debian-backports for wheezy heraus. Es stellte sich heraus, dass das Post-Install-Skript so geändert wurde, dass es den Aufruf 'su - $ OWNER -c "sa-update ...' hat, der eine vollständige Login-Shell-Ausführung nach / bin / sh ausführte, die mit unserem / etc / profile nicht kompatibel war und /etc/profile.d Dateien. Entfernen des '-', wodurch es "su $ OWNER -c ...." wurde für mich
behoben
Ich habe kein genaues Problem, aber Ihre Tipps zum Debuggen haben mir sehr geholfen! Vielen Dank!
Chaosguru
9

Um solche Probleme zu debuggen, würden Sie im Allgemeinen bearbeiten /var/lib/dpkg/info/spamassassin.postinst(oder .preinst, pr .prermoder .postrm; je nachdem, welches fehlschlägt) und #!/bin/shin der obersten Zeile auf #!/bin/sh -x(dasselbe, wenn es bashstattdessen: einfach hinzufügen -x) ändern.

Dadurch erhalten Sie ein zeilenweises Debugging des Shell-Skripts, sodass Sie feststellen können, wo es mit einem Code ungleich Null beendet wird (was dazu führt, dass die Installation / Aktualisierung fehlschlägt).

Zum Debuggen sind jedoch wahrscheinlich mindestens einige Shell-Skriptfähigkeiten erforderlich.

Matija Nalis
quelle