W skrócie: Próbuję zainstalować spamassassin, ale dpkg zwraca tylko:
dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1
Próbowałem znaleźć więcej informacji o tym, co dzieje się źle, ale nie mogę znaleźć nigdzie przydatnego logowania.
W / var / crash generowany jest raport o awarii spamassassin, ale daje to tylko stare błędy dpkg i:
Start-Date: 2014-02-17 19:18:13
Commandline: apt-get install spamassassin
AptOrdering:
spamassassin: Configure
amavisd-new-postfix: Configure
Następnie następuje rejestracja dmesg od uruchomienia. Amavis podaje błąd, ponieważ spamassassin zależności nie jest skonfigurowany.
Sprawdziłem pliki dziennika:
apt history.log
apt term.log
dpkg.log
syslog.log
ale bez dodatkowych informacji.
Próbowałem dpkg -D ze wszystkimi możliwymi ósemkami, ale nie znajduję nic użytecznego w tym, co może pójść nie tak.
Napisano wiele pytań i możliwych rozwiązań dotyczących błędów dpkg i wiele próbowałem, ale bez dodatkowych informacji nie mam wrażenia, że nigdzie się pojawia.
Z pewnością musi być gdzieś możliwość przeczytania, co się dzieje źle, lub podkręcenie rejestrowania, aby zostało zarejestrowane?
Odpowiedzi:
Ok, znalazłem rozwiązanie tego problemu. Myślałem, że nie byłem w stanie zwiększyć rejestrowania, aby uzyskać więcej danych, dane już przedstawione miały wskazówkę dotyczącą problemu.
mówi, że dpkg napotkał błąd podczas przetwarzania spamassassin podczas uruchamiania konfiguracji. Następny wiersz mówi nam, że skrypt poinstalacyjny nie zakończył się poprawnie.
W katalogu / var / lib / dpkg / info możemy zlokalizować pliki skryptowe dpkg, plik: spamassassin.postinst daje nam plik skryptowy, który wygenerował błąd.
W tym pliku wiemy, że musimy spojrzeć na kod uruchamiany przez config:
i po jakimś debugowaniu znalazłem linię:
zwrócił kod wyjścia 1 (uruchom polecenie @commandline i użyj echo $? obok, aby uzyskać kod wyjścia)
Problem polegał na tym, że użytkownik debian-spamd już istniał w moim systemie, ale jego powłoka logowania to / bin / false. Su -ing z / bin / false zwraca bez komunikatu, ale kod wyjścia 1.
Dodanie -s / bin / sh do polecenia rozwiązało problem, ale ostatecznie zmieniłem powłokę logowania użytkownika, aby pozostać w synchronizacji z przyszłymi aktualizacjami.
źródło
Ogólnie rzecz biorąc, aby debugować takie problemy, należy edytować
/var/lib/dpkg/info/spamassassin.postinst
(lub.preinst
, pr.prerm
lub.postrm
; w zależności od tego, który z nich zawiedzie) i zmienić#!/bin/sh
w górnym wierszu na#!/bin/sh -x
(to samo, jeślibash
zamiast tego: wystarczy dodać-x
)Zapewniłoby to debugowanie skryptu powłoki wiersz po wierszu, dzięki czemu można było powiedzieć, gdzie kończy działanie, kodem niezerowym (powodując niepowodzenie instalacji / aktualizacji).
Prawdopodobnie wymagałoby to jednak przynajmniej pewnych umiejętności skryptowych do debugowania.
źródło