Com reconstruir la base de dades RPM danyada a CentOS


La base de dades RPM està formada per fitxers del directori /var/lib/rpm/ a CentOS i altres distribucions de Linux empresarials com RHEL, openSUSE, Oracle Linux i més.

Si la base de dades RPM està danyada, RPM no funcionarà correctament, per tant, les actualitzacions no es poden aplicar al vostre sistema, trobareu errors mentre actualitzeu els paquets al vostre sistema mitjançant ordres rpm i yum amb èxit.

Hi ha una sèrie de factors que poden provocar la corrupció de la base de dades RPM, com ara transaccions anteriors incompletes, instal·lació de cert programari de tercers, eliminació de paquets específics i molts altres.

En aquest article, mostrarem com reconstruir una base de dades RPM danyada; d'aquesta manera, podeu recuperar-vos d'una corrupció de base de dades RPM a CentOS. Això requereix privilegis d'usuari root, en cas contrari, utilitzeu l'ordre sudo per obtenir aquests privilegis.

Reconstrueix la base de dades RPM danyada a CentOS

Primer comenceu fent una còpia de seguretat de la vostra base de dades RPM actual abans de continuar (pot ser que ho necessitis en el futur), utilitzant les ordres següents.

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

A continuació, verifiqueu la integritat del fitxer de metadades del paquet principal /var/lib/rpm/Packages; aquest és el fitxer que cal reconstruir, però primer elimineu els fitxers /var/lib/rpm/__db* per evitar bloquejos obsolets mitjançant les ordres següents.

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

En cas que l'operació anterior falla, és a dir, encara us trobeu amb errors, haureu d'abocar i carregar una nova base de dades. Comproveu també la integritat del fitxer de paquets recentment carregat de la manera següent.

# 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

Ara, per comprovar les capçaleres de la base de dades, consulteu tots els paquets instal·lats utilitzant els senyaladors -q i -a i proveu d'observar detingudament qualsevol error(s) enviat al stderror.

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

Per últim, però no menys important, reconstruïu la base de dades RPM amb l'ordre següent, l'opció -vv permet mostrar molta informació de depuració.

# rpm -vv --rebuilddb

Utilitzeu l'eina dcrpm per detectar i corregir la base de dades RPM

També vam descobrir l'eina de línia d'ordres dcrpm (detectar i corregir rpm) que s'utilitza per identificar i corregir problemes coneguts relacionats amb la corrupció de la base de dades RPM. És una eina senzilla i fàcil d'utilitzar que podeu executar sense opció. Per a un ús eficaç i fiable, hauríeu d'executar-lo regularment mitjançant cron.

Podeu instal·lar-lo des de la font; descarregueu l'arbre font i instal·leu-lo mitjançant setup.py (que també hauria d'agafar la dependència psutil de pypi), tal com es mostra.

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

Un cop instal·lat dcrpm, executeu-lo tal com es mostra.

# dcrpm

Finalment, proveu de tornar a executar la vostra comanda rpm o yum fallida per veure si tot funciona bé.

dcrpm Repositori Github: https://github.com/facebookincubator/dcrpm
Podeu trobar més informació a la pàgina de recuperació de la base de dades RPM.

Això és tot! En aquest article, hem explicat com reconstruir una base de dades RPM danyada a CentOS. Per fer qualsevol pregunta o compartir les vostres opinions sobre aquesta guia, utilitzeu el formulari de comentaris que trobareu a continuació.