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?
Antworten:
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.
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:
und nach einigem Debuggen fand ich die Zeile heraus:
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.
quelle
Um solche Probleme zu debuggen, würden Sie im Allgemeinen bearbeiten
/var/lib/dpkg/info/spamassassin.postinst
(oder.preinst
, pr.prerm
oder.postrm
; je nachdem, welches fehlschlägt) und#!/bin/sh
in der obersten Zeile auf#!/bin/sh -x
(dasselbe, wenn esbash
stattdessen: 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.
quelle