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)

