Kako obnoviti oštećenu RPM bazu podataka u CentOS-u


RPM baza podataka se sastoji od fajlova u /var/lib/rpm/ direktorijumu u CentOSu i drugim poslovnim Linux distribucijama kao što je RHEL, openSUSE, Oracle Linux i još mnogo toga.

Ako je RPM baza podataka oštećena, RPM neće raditi ispravno, stoga se ažuriranja ne mogu primijeniti na vaš sistem, nailazite na greške prilikom ažuriranja paketa na vašem sistemu preko YUM menadžera paketa. Najgori scenario je nemogućnost uspješnog pokretanja rpm i yum komandi.

Pročitajte također: 20 praktičnih primjera RPM komande u Linuxu

Postoji niz faktora koji mogu dovesti do oštećenja RPM baze podataka, kao što su nepotpune prethodne transakcije, instalacija određenog softvera treće strane, uklanjanje određenih paketa i mnogi drugi.

U ovom članku ćemo pokazati kako ponovo izgraditi oštećenu RPM bazu podataka; na ovaj način se možete oporaviti od oštećenja RPM baze podataka u CentOS-u. Ovo zahtijeva privilegije root korisnika, u suprotnom koristite naredbu sudo da dobijete te privilegije.

Ponovo izgradite oštećenu RPM bazu podataka u CentOS-u

Prvo počnite tako što ćete napraviti sigurnosnu kopiju vaše trenutne RPM baze podataka prije nego što nastavite (možda će vam trebati u budućnosti), koristeći sljedeće naredbe.

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

Zatim provjerite integritet datoteke metapodataka glavnog paketa /var/lib/rpm/Packages; ovo je fajl koji treba ponovo izgraditi, ali prvo uklonite /var/lib/rpm/__db* fajlove da sprečite zastarele brave koristeći sledeće komande.

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

U slučaju da gornja operacija ne uspije, što znači da i dalje nailazite na greške, tada biste trebali ispisati i učitati novu bazu podataka. Također provjerite integritet svježe učitane datoteke paketa na sljedeći način.


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

Sada da provjerite zaglavlja baze podataka, upitajte sve instalirane pakete koristeći zastavice -q i -a i pokušajte pažljivo promatrati sve greške koje se šalju na stderror.


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

Na kraju, ali ne i najmanje važno, ponovo izgradite RPM bazu podataka koristeći sljedeću naredbu, opcija -vv omogućava prikaz puno informacija za otklanjanje grešaka.

rpm -vv --rebuilddb

Koristite dcrpm alat za otkrivanje i ispravljanje RPM baze podataka

Također smo otkrili dcrpm (otkrivanje i ispravljanje rpm) alata komandne linije koji se koristi za identifikaciju i ispravljanje dobro poznatih problema u vezi s oštećenjem RPM baze podataka. To je jednostavan i lak za korištenje alat koji možete pokrenuti bez opcija. Za efikasnu i pouzdanu upotrebu, trebali biste ga redovno pokretati preko cron-a.

Možete ga instalirati iz izvora; preuzmite izvorno stablo i instalirajte ga pomoću setup.py (koji bi također trebao preuzeti psutil ovisnost od pypi), kao što je prikazano.

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

Nakon što instalirate dcrpm, pokrenite ga kako je prikazano.

dcrpm

Na kraju, pokušajte ponovo pokrenuti vašu neuspjelu naredbu rpm ili yum da vidite da li sve radi u redu.

dcrpm Github spremište: https://github.com/facebookincubator/dcrpm
Više informacija možete pronaći na stranici za oporavak RPM baze podataka.

To je sve! U ovom članku smo objasnili kako ponovo izgraditi oštećenu RPM bazu podataka u CentOS-u. Da biste postavili bilo kakva pitanja ili podijelili svoje mišljenje o ovom vodiču, koristite obrazac za povratne informacije u nastavku.