Cómo reconstruir una base de datos RPM dañada en CentOS


La base de datos RPM está formada por 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 de RPM está dañada, RPM no funcionará correctamente, por lo que las actualizaciones no se pueden aplicar a su sistema, encuentra errores al actualizar paquetes en su sistema a través de los comandos rpm y yum con éxito.

Hay una serie de factores que pueden conducir a 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 una corrupción de la base de datos RPM en CentOS. Esto requiere privilegios de usuario root; de lo contrario, use el comando sudo para obtener esos privilegios.

Reconstruir la base de datos RPM dañada 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 reconstruirse, 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 , y trate de observar cuidadosamente cualquier error enviado al stderror.

# 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 de RPM

También descubrimos la herramienta de línea de comandos dcrpm (detectar y corregir rpm) que se utiliza para identificar y corregir problemas conocidos relacionados con la corrupción de la base de datos RPM. Es una herramienta simple y fácil de usar que puede ejecutar sin opción. Para un uso efectivo y confiable, debe ejecutarlo regularmente a través de cron.

Puede 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 su comando rpm o yum fallido nuevamente 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, hemos explicado cómo reconstruir una base de datos RPM dañada en CentOS. Para hacer preguntas o compartir sus opiniones sobre esta guía, utilice el formulario de comentarios a continuación.