---
title: "Arreglar el error «Cannot Open Packages Database in /var/lib/rpm» DB_RUNRECOVERY: error fatal"
description: "Aprende a solucionar el habitual error «Cannot open Packages database in /var/lib/rpm» DB_RUNRECOVERY: error fatal y a volver a instalar paquetes."
date: 2024-05-24
categories: ["linux"]
tags: ["linux"]
---

Si te aparece el mensaje de error de abajo, que no te permite instalar paquetes con `rpm` o `yum`:

```sh
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/rpm
```

indica 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

1. **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.
2. **Archivos de bloqueo residuales**: Si los comandos `rpm`, `yum` o `dnf` no terminan correctamente, pueden dejar atrás archivos de bloqueo en `/var/lib/rpm`, lo que provoca que las operaciones posteriores fallen.
3. **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.
4. **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:

1. **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/
   ```

2. **Elimina los archivos de base de datos corruptos**:

   ```bash
   rm -f /var/lib/rpm/__db.[0-9][0-9]*
   ```

3. **Reconstruye la base de datos de RPM**:

   ```bash
   rpm --rebuilddb
   ```

4. **Limpia la caché de Yum**:

   ```bash
   yum clean all
   ```

5. **Verifica la integridad del archivo Packages** (opcional):

   ```bash
   db_verify /var/lib/rpm/Packages
   ```

6. **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:

```bash
# 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 all
```

## Consideraciones 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.