Comment déboguer l'erreur de configuration de dpkg dans la sous-installation post-installation?

17

En bref: j'essaie d'installer spamassassin mais dpkg ne retourne qu'avec:

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

J'ai essayé de trouver plus d'informations sur ce qui ne va pas, mais je ne trouve aucun journal utile.

Dans / var / crash, un rapport de crash de spamassassin est généré mais cela ne donne que les anciennes erreurs de dpkg et:

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

Suivi par la journalisation dmesg depuis le démarrage. Amavis donne une erreur car le spamassassin de dépendance n'est pas configuré.

J'ai vérifié les fichiers journaux:

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

mais pas d'informations supplémentaires.

J'ai essayé dpkg -D avec tous les octaux possibles mais je ne trouve rien d'utile sur ce qui pourrait mal tourner.

Beaucoup de questions et de solutions possibles ont été écrites sur les erreurs de dpkg et j'ai essayé beaucoup, mais sans information supplémentaire, je n'ai pas le sentiment que j'obtiens quelque part.

Il doit sûrement y avoir quelque part une possibilité de lire ce qui ne va pas ou de lancer une journalisation pour qu'elle soit consignée?

Requist
la source
Vous devez faire défiler vers le haut dans votre terminal et voir l'erreur spécifique, dans le message que vous avez vu. Pour les déboguer, vous devez voir quelle est l' erreur exacte qui a déclenché cela.
Thomas Ward
il devrait y avoir une description dans le terminal, avez-vous regardé dans /var/log/spamassassin/spamd.log?
kamil
J'ai parcouru tous les journaux, purgé, refait l'installation de différentes manières. Tout pour trouver un peu plus d'informations sur l'erreur, mais je n'en trouve pas. Spamd.log n'est pas encore créé.
Demander

Réponses:

16

Ok, j'ai trouvé la solution à ce problème. Je pensais que je ne pouvais pas augmenter la journalisation pour obtenir plus de données, les données déjà présentées avaient la clé du problème.

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

indique que dpkg a rencontré une erreur de traitement de spamassassin lors de l'exécution de configure. La ligne suivante nous indique que le script de post-installation ne s'est pas terminé correctement.

Dans le répertoire / var / lib / dpkg / info, nous pouvons localiser les fichiers de script de dpkg, le fichier: spamassassin.postinst nous donne le fichier de script qui a généré l'erreur.

Dans ce fichier, nous savons que nous devons regarder le code exécuté par configure:

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

et après quelques débogages, j'ai découvert la ligne:

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

a retourné le code de sortie 1 (exécutez la commande @commandline et utilisez echo $? next pour obtenir le code de sortie)

Le problème était que l'utilisateur debian-spamd existait déjà sur mon système mais son shell de connexion était / bin / false. Su-ing avec / bin / false renvoie sans aucun message mais exitcode 1.

L'ajout de -s / bin / sh à la commande a résolu le problème, mais à la fin j'ai modifié le shell de connexion de l'utilisateur pour rester synchronisé avec les futures mises à jour.

Requist
la source
J'ai eu un problème similaire avec vous. Avec l'installateur échouant à plat. Le mien s'est avéré être un problème avec l'installation de la dernière version de debian-backports pour Wheezy. Il s'est avéré qu'ils ont changé le script de post-installation pour avoir un appel 'su - $ OWNER -c "sa-update ...' qui a fait un shell de connexion complet pour exécuter / bin / sh qui était incompatible avec notre / etc / profile et /etc/profile.d. supprimer le '-' en le faisant "su $ OWNER -c ...." l'a corrigé pour moi
Vagnerr
Je n'ai pas de problème exact mais vos conseils de débogage m'ont beaucoup aidé! Merci!
chaosguru
9

Généralement, pour déboguer de tels problèmes, vous devez modifier /var/lib/dpkg/info/spamassassin.postinst(ou .preinst, pr .prermou .postrm; en fonction de celui qui échoue) et changer #!/bin/shsur la ligne supérieure en #!/bin/sh -x(même chose si à la bashplace: ajoutez simplement -x)

Cela vous fournirait un débogage ligne par ligne du script shell, afin que vous puissiez dire où il se termine avec un code différent de zéro (ce qui entraînerait l'échec de l'installation / mise à niveau).

Cela nécessiterait probablement au moins quelques compétences de script shell pour déboguer.

Matija Nalis
la source