Cum să reconstruiți o bază de date RPM coruptă în CentOS


Baza de date RPM este alcătuită din fișiere din directorul /var/lib/rpm/ din CentOS și din alte distribuții Linux pentru întreprinderi, cum ar fi RHEL, openSUSE, Oracle Linux și multe altele.

Dacă baza de date RPM este coruptă, RPM nu va funcționa corect, astfel că actualizările nu pot fi aplicate sistemului dvs., întâmpinați erori la actualizarea pachetelor pe sistem prin managerul de pachete YUM. Cel mai rău caz este că nu puteți rula cu succes orice comenzi rpm și yum.

Citiți și: 20 de exemple practice de comandă RPM în Linux

Există o serie de factori care pot duce la coruperea bazei de date RPM, cum ar fi tranzacțiile anterioare incomplete, instalarea anumitor programe software terță parte, eliminarea anumitor pachete și multe altele.

În acest articol, vom arăta cum să reconstruiți o bază de date RPM coruptă; în acest fel vă puteți recupera dintr-o corupție a bazei de date RPM în CentOS. Acest lucru necesită privilegii de utilizator root, în caz contrar, utilizați comanda sudo pentru a obține aceste privilegii.

Reconstruiți baza de date RPM coruptă în CentOS

Începeți mai întâi prin a face o copie de rezervă a bazei de date RPM curente înainte de a continua (s-ar putea să aveți nevoie de aceasta în viitor), folosind următoarele comenzi.

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

Apoi, verificați integritatea fișierului de metadate a pachetului principal /var/lib/rpm/Packages; acesta este fișierul care trebuie reconstruit, dar mai întâi eliminați fișierele /var/lib/rpm/__db* pentru a preveni blocările învechite folosind următoarele comenzi.

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

În cazul în care operațiunea de mai sus nu reușește, ceea ce înseamnă că încă întâmpinați erori, atunci ar trebui să descărcați și să încărcați o nouă bază de date. Verificați, de asemenea, integritatea fișierului pachete proaspăt încărcat, după cum urmează.


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

Acum, pentru a verifica anteturile bazei de date, interogați toate pachetele instalate folosind steagurile -q și -a și încercați să observați cu atenție orice eroare(e) trimisă(e) către stderror.


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

Nu în ultimul rând, reconstruiți baza de date RPM folosind următoarea comandă, opțiunea -vv permite afișarea multor informații de depanare.

rpm -vv --rebuilddb

Utilizați instrumentul dcrpm pentru a detecta și corecta baza de date RPM

De asemenea, am descoperit instrumentul de linie de comandă dcrpm (detecta și corectează rpm) folosit pentru a identifica și corecta probleme bine cunoscute legate de coruperea bazei de date RPM. Este un instrument simplu și ușor de utilizat pe care îl puteți rula fără opțiune. Pentru o utilizare eficientă și fiabilă, ar trebui să îl rulați în mod regulat prin cron.

Îl puteți instala din sursă; descărcați arborele sursă și instalați-l folosind setup.py (care ar trebui să preia dependența psutil și de la pypi), așa cum se arată.

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

După ce ați instalat dcrpm, rulați-l așa cum se arată.

dcrpm

În cele din urmă, încercați să rulați comanda eșuată rpm sau yum din nou pentru a vedea dacă totul funcționează bine.

Depozitul dcrpm Github: https://github.com/facebookincubator/dcrpm
Puteți găsi mai multe informații de pe pagina de recuperare a bazei de date RPM.

Asta e tot! În acest articol, am explicat cum să reconstruiți o bază de date RPM coruptă în CentOS. Pentru a pune întrebări sau pentru a vă împărtăși părerile despre acest ghid, utilizați formularul de feedback de mai jos.