En bref: j'essaie d'installer spamassassin mais dpkg ne renvoie que les éléments suivants:
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 n'allait pas, mais je ne trouve nulle part une journalisation utile.
Dans/var/crash, un rapport de blocage spamassassin est généré, mais cela ne donne que les anciennes erreurs dpkg et:
Start-Date: 2014-02-17 19:18:13
Commandline: apt-get install spamassassin
AptOrdering:
spamassassin: Configure
amavisd-new-postfix: Configure
Suivi par dmesg se connectant à partir du démarrage. Amavis génère une erreur car la dépendance spamassassin n'est pas configurée.
J'ai vérifié les fichiers de log:
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 à ce qui pourrait mal tourner.
Beaucoup d’interrogations et de solutions possibles ont été formulées sur les erreurs de dpkg et beaucoup j’ai essayé, mais sans information supplémentaire, je n’ai pas l’impression que je vais nulle part.
Il doit sûrement y avoir quelque part une possibilité de lire ce qui ne va pas ou de démarrer un enregistrement pour qu'il soit enregistré?
Ok, j'ai trouvé la solution à ce problème. Bien que je ne sois pas en mesure de lancer 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
dit que dpkg a rencontré une erreur lors du traitement de spamassassin lors de l'exécution de configure. La ligne suivante nous dit 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 fournit 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"]; puis
et après un certain débogage, 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 renvoyé 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 que son shell de connexion était/bin/false. Su -ing avec/bin/false renvoie sans message sauf le code de sortie 1.
L'ajout de - s/bin/sh à la commande a résolu le problème, mais j'ai finalement modifié le login Shell de l'utilisateur pour rester en phase avec les futures mises à jour.
Généralement, pour déboguer de tels problèmes, éditez /var/lib/dpkg/info/spamassassin.postinst
(ou .preinst
, pr .prerm
ou .postrm
; en fonction de celui qui échoue) et remplacez #!/bin/sh
sur la ligne supérieure par #!/bin/sh -x
(idem avec bash
à la place: ajoutez simplement -x
).
Cela vous fournirait un débogage ligne par ligne du script Shell, de sorte que vous puissiez savoir où il se termine avec un code différent de zéro (ce qui entraîne l'échec de l'installation/mise à niveau).
Cela nécessiterait probablement au moins quelques compétences en scripts Shell pour déboguer.