Reparar la base de datos de apt-get

De MEPIS Documentation Wiki

Tabla de contenidos

Primeras cosas a probar

Ejecutar como superusuario:

dpkg --configure -a 
apt-get -f install

Sobreescribir problemas

Ejemplo:

dpkg: error processing /var/cache/apt/archives/libcupsys2-dev_1.1.23-3_i386.deb(--unpack):
 trying to overwrite `/usr/share/man/fr/man1/cups-config.1.gz', which is also in package cupsys
Errors were encountered while processing:
 /var/cache/apt/archives/libcupsys2-dev_1.1.23-3_i386.deb

Solución: Forzar la instalación de dicho paquete específico:

dpkg -i --force-overwrite /var/cache/apt/archives/libcupsys2-dev_1.1.23-3_i386.deb

Si se cuelga

Escenario: apt-get se queda colgado durante la fase de configuración, uno se cansa de esperar y se pulsa Ctrl-c para abortar la ejecución del programa y a continuación se muestra un error indicando que el siguiente paquete tuvo problemas.

Se debería ser capaz de reproducir el error/cuelge con

  apt-get install algún-paquete-no-relacionado-ya-instalado
  

Por ejemplo usar el siguiente programa:

apt-get install emacs21

Hay algunos comandos de apt-get recientemente añadidos -- autoclean y autoremove -- pueden ser de utilidad. Por lo que se puede intentar usar esos. (Se puede obtener la versión más reciente de apt usando apt-get install apt.)

Otra cosa que suele ser útil es ejecutar

 apt-get --purge remove paquete

o si eso no funcionó se puede proceder como se indica a continuación en el apartado "Eliminar un paquete seriamente dañado".

Tras cada purga de un paquete, probar

  apt-get install algún-paquete-no-relacionado-ya-instalado

como antes. Y cuando se dejen de tener errores al ejecutar esto todo está solucionado.

Se uso lo siguiente como pantalla para un script de ayuda para resolver este tipo de situación

 #!/bin/bash
 find /var/cache/apt/archives/ | grep -i gtk | xargs rm -f
 dpkg --configure -a
 
 # probablemente no se necesita esto, simplemente si el equipo tiene poca memoria RAM; el parámetro y es para responder automáticamente sí
 APTGET_FLAGS='-y -o APT::Cache-Limit=25165824' 
 
 apt-get $APTGET_FLAGS --purge remove libghc6-gtk-dev
 dpkg --purge --force-remove-reinstreq libghc6-gtk-dev
 
 apt-get $APTGET_FLAGS autoclean # eliminar si no se puede descargar de el repositorio limpiamente
 apt-get $APTGET_FLAGS autoremove # limpiar dependencias sin utilizar
 apt-get $APTGET_FLAGS install emacs21 # ya instalado, no debería de producir errores

Eliminar un paquete seriamente dañado

1) Si todo lo demás falló se puede usar:

dpkg --purge --force-remove-reinstreq <nombre del paquete>

2) el siguiente procedimiento si 1) no funciona.
a. dpkg --listfiles <nombre del paquete>

Buscar cada fichero que se instaló y a continuación buscarlos y eliminarlos.

b. Editar el archivo /var/lib/dpkg/status

Eliminar la sección del paquete seriamente dañado (Hacer una copia de seguridad antes de editar el archivo)

c. Editar el archivo /var/lib/dpkg/available

Eliminar la sección del paquete seriamente dañado (Hacer una copia de seguridad antes de editar el archivo)
Herramientas personales
Otros idiomas