Búsqueda de sitios web

Cómo reconstruir una base de datos RPM corrupta en CentOS


La base de datos RPM se compone de archivos en el directorio /var/lib/rpm/ en CentOS y otras distribuciones empresariales de Linux como >RHEL, openSUSE, Oracle Linux y más.

Si la base de datos RPM está dañada, RPM no funcionará correctamente, por lo que no se podrán aplicar actualizaciones a su sistema y encontrará errores al actualizar paquetes en su sistema a través del administrador de paquetes YUM. El peor de los casos es no poder ejecutar correctamente ningún comando rpm y yum.

Lea también: 20 ejemplos prácticos del comando RPM en Linux

Hay una serie de factores que pueden provocar la corrupción de la base de datos RPM, como transacciones anteriores incompletas, instalación de cierto software de terceros, eliminación de paquetes específicos y muchos otros.

En este artículo, mostraremos cómo reconstruir una base de datos RPM dañada; de esta manera puede recuperarse de la corrupción de una base de datos RPM en CentOS. Esto requiere privilegios de usuario root; de lo contrario, utilice el comando sudo para obtener esos privilegios.

Reconstruir la base de datos RPM corrupta en CentOS

Primero comience haciendo una copia de seguridad de su base de datos RPM actual antes de continuar (es posible que la necesite en el futuro), usando los siguientes comandos.

mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

A continuación, verifique la integridad del archivo de metadatos del paquete maestro /var/lib/rpm/Packages; este es el archivo que necesita reconstrucción, pero primero elimine los archivos /var/lib/rpm/__db* para evitar bloqueos obsoletos usando los siguientes comandos.

rm -f /var/lib/rpm/__db*		
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

En caso de que la operación anterior falle, lo que significa que aún encuentra errores, debe volcar y cargar una nueva base de datos. También verifique la integridad del archivo de paquetes recién cargado de la siguiente manera.


cd /var/lib/rpm/
mv Packages Packages.back
/usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages

Ahora, para verificar los encabezados de la base de datos, consulte todos los paquetes instalados usando los indicadores -q y -a e intente observar cuidadosamente cualquier error enviado al error estándar.


rpm -qa >/dev/null	#output is discarded to enable printing of errors only

Por último, pero no menos importante, reconstruya la base de datos RPM usando el siguiente comando, la opción -vv permite mostrar mucha información de depuración.

rpm -vv --rebuilddb

Utilice la herramienta dcrpm para detectar y corregir la base de datos RPM

También descubrimos la herramienta de línea de comandos dcrpm (detectar y corregir rpm) utilizada para identificar y corregir problemas conocidos relacionados con la corrupción de la base de datos RPM. Es una herramienta sencilla y fácil de usar que puedes ejecutar sin opción. Para un uso eficaz y confiable, debe ejecutarlo periódicamente mediante cron.

Puedes instalarlo desde la fuente; descargue el árbol de fuentes e instálelo usando setup.py (que también debería tomar la dependencia psutil de pypi), como se muestra.

git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install

Una vez que haya instalado dcrpm, ejecútelo como se muestra.

dcrpm

Finalmente, intente ejecutar nuevamente el comando fallido rpm o yum para ver si todo funciona bien.

Repositorio dcrpm Github: https://github.com/facebookincubator/dcrpm
Puede encontrar más información en la página de recuperación de la base de datos RPM.

¡Eso es todo! En este artículo, explicamos cómo reconstruir una base de datos RPM dañada en CentOS. Para hacer cualquier pregunta o compartir sus opiniones sobre esta guía, utilice el formulario de comentarios a continuación.