Jak debugować błąd konfiguracji dpkg w instalacji podprocesowej?


17

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?


Musisz przewinąć terminal w górę i zobaczyć konkretny błąd w wyświetlonym komunikacie. Aby je debugować, musisz zobaczyć, jaki dokładnie błąd spowodował ten błąd.
Thomas Ward

powinien być opis w terminalu, czy przeglądałeś /var/log/spamassassin/spamd.log?
kamil

Przebiłem wszystkie kłody, oczyściłem, przerobiłem instalację na wiele różnych sposobów. Wszystko, aby znaleźć trochę więcej informacji o błędzie, ale nie mogę znaleźć żadnego. Spamd.log nie jest jeszcze tworzony.
Requist

Odpowiedzi:


16

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.

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

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:

if ["$ 1" = "configure"]; następnie

i po jakimś debugowaniu znalazłem linię:

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

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.


Miałem podobny problem do ciebie. Instalator po prostu zawodzi. Mój okazał się problemem z instalacją najnowszej wersji z backport-debian dla wheezy. Okazało się, że zmienili skrypt poinstalacyjny na wywołanie „su - $ OWNER -c” sa-update ... ”, które wykonało pełne wykonanie powłoki powłoki exec do / bin / sh, co było niezgodne z naszym profilem / etc / i pliki /etc/profile.d. usunięcie „-” czyniąc go „su $ OWNER -c ....” naprawiono dla mnie
Vagnerr

Nie mam dokładnego problemu, ale twoje wskazówki debugowania bardzo mi pomogły! dzięki!
chaosguru,

9

Ogólnie rzecz biorąc, aby debugować takie problemy, należy edytować /var/lib/dpkg/info/spamassassin.postinst(lub .preinst, pr .prermlub .postrm; w zależności od tego, który z nich zawiedzie) i zmienić #!/bin/shw górnym wierszu na #!/bin/sh -x(to samo, jeśli bashzamiast 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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.