Arreglar el error «Cannot Open Packages Database in /var/lib/rpm» DB_RUNRECOVERY: error fatal
Aprende a solucionar el habitual error «Cannot open Packages database in /var/lib/rpm» DB_RUNRECOVERY: error fatal y a volver a instalar paquetes.
4 min de lectura

Si te aparece el mensaje de error de abajo, que no te permite instalar paquetes con rpm o yum:
error: rpmdb: BDB0113 Thread/process 21929/140612494501952 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
error: rpmdb: BDB0113 Thread/process 21929/140612494501952 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages database in /var/lib/rpmindica que la base de datos de RPM (rpmdb) está corrupta. Esta corrupción puede ocurrir por varias razones, como instalaciones, actualizaciones o desinstalaciones de paquetes interrumpidas, cortes de energía u otras interrupciones del sistema.
Causas de la corrupción de la base de datos de RPM
- Operaciones interrumpidas: La causa más común es la interrupción de operaciones de gestión de paquetes, como una instalación, actualización o desinstalación. Esto puede ocurrir si el proceso se detiene manualmente o si el sistema pierde energía durante la operación.
- Archivos de bloqueo residuales: Si los comandos
rpm,yumodnfno terminan correctamente, pueden dejar atrás archivos de bloqueo en/var/lib/rpm, lo que provoca que las operaciones posteriores fallen. - Problemas de hardware: Una memoria o un disco defectuosos también pueden corromper la base de datos. Es menos común, pero deberías tenerlo en cuenta si el problema persiste.
- Errores de software: Puede haber bugs en el software de RPM o de Berkeley DB que causen corrupción bajo ciertas condiciones.
Pasos para resolver el problema
Para arreglar la base de datos de RPM corrupta, puedes seguir estos pasos:
-
Haz una copia de seguridad de la base de datos RPM actual:
bash mkdir /var/lib/rpm/backup cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/ -
Elimina los archivos de base de datos corruptos:
bash rm -f /var/lib/rpm/__db.[0-9][0-9]* -
Reconstruye la base de datos de RPM:
bash rpm --rebuilddb -
Limpia la caché de Yum:
bash yum clean all -
Verifica la integridad del archivo Packages (opcional):
bash db_verify /var/lib/rpm/Packages -
Comprueba si hay problemas de hardware (opcional): Revisa los registros del sistema en busca de errores relacionados con el hardware que puedan indicar una memoria o un disco defectuosos.
Comandos de ejemplo
Aquí tienes un conjunto consolidado de comandos para realizar los pasos anteriores:
# Copia de seguridad de la base de datos RPM actual
mkdir /var/lib/rpm/backup
cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/
# Eliminar los archivos de base de datos corruptos
rm -f /var/lib/rpm/__db.[0-9][0-9]*
# Reconstruir la base de datos de RPM
rpm --rebuilddb
# Limpiar la caché de Yum
yum clean allConsideraciones adicionales
- Garantiza operaciones sin interrupciones: Asegúrate de que las operaciones de gestión de paquetes no se interrumpan. Usa un SAI (UPS) para evitar cortes de energía durante operaciones críticas.
- Comprueba problemas de automatización: Si usas herramientas de automatización, asegúrate de que no estén terminando los procesos de gestión de paquetes de forma abrupta.
- Monitoriza los registros del sistema: Revisa periódicamente los registros del sistema en busca de señales de problemas de hardware u otras anomalías que puedan provocar la corrupción de la base de datos.
Siguiendo estos pasos, deberías poder resolver la corrupción de la base de datos de RPM y evitar que vuelva a ocurrir. Si el problema persiste, considera investigar más a fondo posibles problemas de hardware o bugs de software.


