¿Cómo depurar el error de configuración de dpkg en el subproceso posterior a la instalación?


17

En resumen: estoy tratando de instalar spamassassin pero dpkg solo regresa con:

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

He tratado de encontrar más información sobre lo que está yendo mal, pero no puedo encontrar ningún registro útil en ninguna parte.

En / var / crash se genera un informe de bloqueo de spamassassin, pero esto solo da errores antiguos de dpkg y:

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

Seguido por el registro de dmesg desde el inicio. Amavis da un error porque la dependencia spamassassin no está configurada.

Revisé los archivos de registro:

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

Pero no hay información adicional.

Intenté dpkg -D con todos los posibles octales, pero no encuentro nada útil sobre lo que podría salir mal.

Se han escrito muchas preguntas y posibles soluciones sobre los errores de dpkg y muchas las he probado, pero sin información adicional no tengo la sensación de que estoy llegando a ningún lado.

¿Seguramente debe haber en algún lugar la posibilidad de leer lo que va mal o de subir algunos registros para que se registre?


Debe desplazarse hacia arriba en su terminal y ver el error específico en el mensaje que vio. Para depurarlos, debe ver cuál fue el error exacto que provocó esto.
Thomas Ward

debería haber una descripción en la terminal, ¿ha buscado en /var/log/spamassassin/spamd.log?
kamil

He revisado todos los registros, la instalación purgada y rehecha de muchas maneras diferentes. Todo para encontrar un poco más de información sobre el error, pero no puedo encontrar ninguno. Spamd.log no se está haciendo todavía.
Requist

Respuestas:


16

Ok, he encontrado la solución para este problema. Pensé que no podía poner en marcha el registro para obtener más datos, los datos ya presentados tenían la pista del problema.

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

dice que dpkg encontró un error al procesar spamassassin al ejecutar configure. La siguiente línea nos dice que el script posterior a la instalación no terminó correctamente.

En el directorio / var / lib / dpkg / info podemos ubicar los archivos de script de dpkg, el archivo: spamassassin.postinst nos da el archivo de script que generó el error.

Dentro de este archivo sabemos que tenemos que mirar el código ejecutado por configure:

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

y después de algunas depuraciones descubrí la línea:

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

devolvió el código de salida 1 (ejecute el comando @commandline y use echo $? next para obtener el código de salida)

El problema era que el usuario debian-spamd ya existía en mi sistema pero su shell de inicio de sesión era / bin / false. Sumar con / bin / false devuelve sin ningún mensaje pero el código de salida 1.

Agregar -s / bin / sh al comando resolvió el problema, aunque al final modifiqué el shell de inicio de sesión del usuario para mantener la sincronización con futuras actualizaciones.


Tuve un problema similar para ti. Con el instalador simplemente falla plana. El mío resultó ser un problema con la instalación de la última versión de debian-backports para wheezy. Resultó que cambiaron el script posterior a la instalación para tener una llamada 'su - $ OWNER -c "sa-update ...' que hizo un exec completo de inicio de sesión a / bin / sh que era incompatible con nuestro / etc / profile y /etc/profile.d archivos. Eliminar el '-' haciéndolo "su $ OWNER -c ...." lo arregló para mí
Vagnerr

No tengo un problema exacto, pero sus sugerencias de depuración me ayudaron mucho. ¡Gracias!
chaosguru

9

En general, para depurar estos problemas, debe editar /var/lib/dpkg/info/spamassassin.postinst(o .preinst, pr .prermo .postrm; dependiendo de cuál falla) y cambiar #!/bin/shen la línea superior a #!/bin/sh -x(lo mismo si en su bashlugar: solo agregue -x)

Eso le proporcionaría una depuración línea por línea del script de shell, por lo que podría saber dónde sale con un código distinto de cero (lo que hace que la instalación / actualización falle).

Sin embargo, probablemente requeriría al menos algunas habilidades de scripting de shell para depurar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.