Cómo arreglar actualizaciones sinápticas rotas: "El paquete está en un estado inconsistente muy malo"

15

Tengo un Dell Mini9 con Ubuntu 8.10. Un día tuve la brillante idea de ver si podía instalar una pila LAMP. Tuve problemas para instalar MySQL 5.0. No recuerdo el error, pero desde que todos los intentos de ejecutar update-manager, synaptic o apt-get fallan con un error sobre mysql-server-5.0: "El paquete está en un estado inconsistente muy malo".

Lo he intentado apt-get remove mysql-server-5.0y también installpero sin suerte. Ambos fallan con el mismo error a continuación. ¿Cómo puedo arreglar esto?

$ sudo apt-get eliminar mysql-server-5.0
Leyendo listas de paquetes ... Hecho
Construyendo árbol de dependencia       
Leyendo información del estado ... Hecho
Los siguientes paquetes se instalaron automáticamente y ya no son necesarios:
  dhcdbd libisc32
Use 'apt-get autoremove' para eliminarlos.
Los siguientes paquetes serán eliminados:
  mysql-server-5.0
0 actualizado, 0 recién instalado, 1 para eliminar y 164 no actualizado.
1 no está completamente instalado o eliminado.
Después de esta operación, se liberarán 85.4 MB de espacio en disco.
¿Quieres continuar [S / n]? 
dpkg: error al procesar mysql-server-5.0 (--remove):
 El paquete está en un estado inconsistente muy malo: debe
 vuelva a instalarlo antes de intentar una eliminación.
Se encontraron errores al procesar:
 mysql-server-5.0
E: Subproceso / usr / bin / dpkg devolvió un código de error (1)
Spoulson
fuente
Considere usar <pre> para la salida de pantalla donde no se necesita resaltar la sintaxis.
John Oxley

Respuestas:

19

Ninguna de las otras respuestas funcionó para mí en Maverick.

En mi caso, encontré que esto funcionó:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm

sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree

(reemplazando "flashplugin-nonfree" con el nombre del paquete roto y reemplazando "prerm" con el tipo de script que falló, en mi caso fue "postrm", el script posterior a la eliminación).

¡Y dicen que Ubuntu es fácil de usar! refunfuñar refunfuñar

Robin Green
fuente
--purge es mejor dejar caer deps rotos
stepancheg
1
He estado buscando durante horas una solución a un problema similar, y este es el único que funcionó. Gracias.
LukeGT
6

Tuve exactamente el mismo problema con una instalación de mysql. Necesitas purgar el paquete. Simplemente eliminar un paquete no elimina los archivos de configuración que vienen con él.

Además, me referiré a mysql-server-5.0 , pero me doy cuenta de que hay un paquete envoltorio mysql-server que siempre apunta a la última versión. es decir, si solicita instalar mysql-server , apt-get debería decirle que depende de mysql-server-5.0 e instalar ambos. Si tiene el paquete mysql-server en el sistema, debe asegurarse de que también haya desaparecido antes de intentar reinstalarlo.

  • Asegúrese de que el servidor mysql (mysqld) no se esté ejecutando. Si es así, bájelo:

    sudo /etc/init.d/mysqld stop

  • Compruebe si algún paquete depende de mysql-server-5.0:

    sudo apt-cache rdepends mysql-server-5.0

    Si lo hacen, deberá usar la opción --force para desinstalar.

  • Purgue el paquete (incluya la opción --force , según # 2)

    sudo apt-get --purge remove --force mysql-server-5.0

  • Asegúrese de que los archivos del instalador también se borren ejecutando

    sudo apt-get autoclean
    sudo apt-get autoremove

  • Instale el paquete del servidor nuevamente

    sudo apt-get install mysql-server-5.0

Con suerte, esto debería solucionar su problema. Sin embargo, el paquete aún podría estar roto si realiza algún cambio en los archivos que provienen del paquete mysql-common .

mysql-common es el paquete base utilizado por los componentes del cliente y del servidor. Si las cosas aún no funcionan, intente reinstalar este paquete. Definitivamente habrá paquetes que dependan de esto; verifique usando # 2 arriba. Purgue mysql-server antes de reinstalar mysql-common . Además, no olvide volver a instalar mysql-common , de lo contrario su sistema estará muy dañado.

nagul
fuente
1

Es posible que desee aptitudeprobar, que tiene un mejor manejo de las dependencias:

sudo aptitude remove mysql-server-5.0
innaM
fuente
El error aquí es dpkg, así que no creo aptitudeque necesariamente le vaya a ir mejor. No me malinterpreten, estoy listo para aptitudeterminar apt-get, pero al final del día, ambos entregan el verdadero meollo de la cuestión dpkg(que te alegrará saber que originalmente se implementó en Perl).
Telémaco
;-) Solo pensé que valdría la pena intentarlo.
innaM
0

Tratar

sudo dpkg -i reconfigure mysql-server-5.0
sudo apt-get remove --force mysql-server-5.0

Si hay otro paquete roto, intente apt-get remove --forceese paquete también.

John Oxley
fuente
0

El dpkgerror que tiene allí sugiere que el problema ocurre cuando dpkgse trata de eliminar el paquete. (Al final del día, apt-gety Synapticsimilares, entregue el trabajo real a dpkg).

¿Has intentado hacer exactamente lo que dice el mensaje y reinstalar primero?

apt-get install --reinstall mysql-server-5.0

Por tonto que parezca, si se dpkgestá ahogando durante el proceso de eliminación (porque se supone que algún archivo se debe eliminar ha desaparecido en el ínterin), reinstalar y luego eliminar a veces puede ayudar. Asegúrese de que mysqlno se esté ejecutando antes de intentar instalarlo o quitarlo, como sugiere nagul .

Telémaco
fuente
0

dpkg -r --force-remove-reinstreq <package> elimina un paquete sin verificar si requiere reinstalación.

Después de eso, debería poder reinstalar el paquete con su administrador de paquetes preferido.

Jaime Soriano
fuente
0

Tuve este problema con el cartero. /Etc/init.d/mailman eliminado con

rm /etc/init.d/mailman

arreglado :)

Stéphan Champagne
fuente