Problema con Yum: rpmdb PANIC

Sucedió que ayer estaba actualizando mi sistema Fedora 12 mediante el actualizador gráfico, el cual suele trabajar bien, pero desafortunadamente en mi casa se fue la luz y la batería de respaldo UPS estába dañada así que irremediablemente se apagó el computador.

Como era de esperarse, la base de datos de YUM, el gestor de paquetes oficial de Fedora, se corrompió.

Esto no es un error crítico, tampoco es algo que sucede exclusivamente a Fedora. Si hubiese estado utilizando Ubuntu, Debian o cualquier otra distro que utiilice APT como gestor de paquetes me hubiera sucedido lo mismo.

OJO, se soluciona diferente en cada distro.


En el caso específico de Fedora, se debería de haber solucionado ejecutando como super usuario  el comando:
# yum-complete-transaction

Dicho comando suele solucionar todos los problemas. En realidad lo que hace es decirle a YUM que complete los procesos faltantes que fueron interrumpidos la última vez. En mi caso, cuando se dio el corte de electricidad en mi casa, el proceso que se estaba ejecutando era la instalación de las actualizaciones, por lo que es de suponer que las bases de datos rpm (rpmdb) se corrompieron.

Debido a que el comando  anterior no funcionó (yum-complete-transaction), YUM decía el siguiente error:

rpmdb: PANIC: fatal region error detected; run recovery

Ahora tocaba intentar reconstruir la base de datos rpm , o bien iniciarla de nuevo. Intententé como super usuario los comandos:
# rpm --rebuilddbrpmdb
# rpm --initdb

A fin de cuentas, obtenía los mismos resultados:

rpmdb: PANIC: fatal region error detected; run recovery
error: db4 error(-30974) de dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: no se pudo abrir índice Packages utilizando db3 – (-30974)

Buscando un poco en Google, encontré un hilo en el foro de soporte en inglés de Fedora, el cual me ayudó a solucionar el problema de una vez por todas.

No sé porque no se me ocurrió antes eliminar la base de datos rpm, con el comando (como super usuario):
# rm /var/lib/rpm/__db*

En mi caso me preguntó:

rm: ¿borrar el fichero regular vacío «/var/lib/rpm/__db.000»? (s/n) s
rm: ¿borrar el fichero regular «/var/lib/rpm/__db.001»? (s/n) s
rm: ¿borrar el fichero regular «/var/lib/rpm/__db.002»? (s/n) s
rm: ¿borrar el fichero regular «/var/lib/rpm/__db.003»? (s/n) s
rm: ¿borrar el fichero regular «/var/lib/rpm/__db.004»? (s/n) s

A todo le dije que Sí (s). Luego como root le dí la orden al sistema para que reconstruyera la base de datos rpm:
# rpm --rebuilddb

Esto suele durar hasta 10 minutos (No arrojó ningún mensaje en la consola). Luego sigue limpiar todo el caché de YUM, como root:
# yum clean all

Ya casi arreglamos el desastre. Falta refrescar/actualizar la base de datos de YUM, como root:
# yum update

Es probable, que YUM te solicite actualizar paquetes. Actualiza primero. Finalmente, utilizaremos el famoso comando arregla todo, como root:
# yum-complete-transaction.

¡Listo! YUM deberí de ser capaz de resolver problemas de paquetes duplicados, paquetes por remover y demás.

No te olvides reiniciar el sistema para que PackageKit (gpk-application) deje de mostrar mensajes de error.

Espero que esta guía sea de utilidad para los demás usuarios de Fedora.

¡Un abrazo y bendiciones!

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
This entry was posted in Fedora, Gestores de archivos, Linux and tagged . Bookmark the permalink.

3 Responses to Problema con Yum: rpmdb PANIC

  1. membrok says:

    k buen aporte grax me sirvio de mushiooooo..
    grax compañerooooo,,,,
    exelente…

  2. membrok says:

    probado en fedora 12

  3. @ membrok:

    Con todo gusto amigo. Siempre he creído que si al menos a 1 persona le sirve el artículo entonces valió la pena el tiempo dedicado al mismo.

    ¡Es de bien nacido ser agradecido!

    Un abrazo y bendiciones

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>