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


Baza podataka RPM sastoji se od datoteka u /var/lib/rpm/ direktoriju u CentOS i drugim poslovnim Linux distribucijama kao što je RHEL, openSUSE, Oracle Linux i više.

Ako je RPM baza podataka oštećena, RPM neće raditi ispravno, stoga se ažuriranja ne mogu primijeniti na vaš sustav, nailazite na greške prilikom ažuriranja paketa na vašem sustavu putem YUM upravitelja paketa. Najgori mogući scenarij je nemogućnost uspješnog pokretanja nijedne naredbe rpm i yum.

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

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

U ovom ćemo članku pokazati kako ponovno izgraditi oštećenu RPM bazu podataka; na ovaj način možete se oporaviti od oštećenja RPM baze podataka u CentOS-u. Za to su potrebne root korisničke povlastice, u protivnom upotrijebite naredbu sudo za dobivanje tih povlastica.

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

Najprije počnite s sigurnosnom kopijom svoje trenutne RPM baze podataka prije nego nastavite (možda će vam zatrebati 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 datoteka koju treba ponovno izgraditi, ali prvo uklonite datoteke /var/lib/rpm/__db* kako biste spriječili ustajala zaključavanja korištenjem sljedećih naredbi.

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 pogreške, tada biste trebali napraviti dump i učitati novu bazu podataka. Također provjerite integritet svježe učitane datoteke paketa kako slijedi.


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 biste provjerili zaglavlja baze podataka, postavite upit svim instaliranim paketima pomoću zastavica -q i -a i pokušajte pažljivo promatrati sve pogreške poslane standardna pogreška.


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

Posljednje, ali ne manje važno, ponovno izgradite RPM bazu podataka koristeći sljedeću naredbu, opcija -vv omogućuje prikaz mnoštva informacija o ispravljanju pogrešaka.

rpm -vv --rebuilddb

Koristite dcrpm alat za otkrivanje i ispravljanje RPM baze podataka

Također smo otkrili dcrpm (detect and correct rpm) alat naredbenog retka koji se koristi za prepoznavanje i ispravljanje poznatih problema u vezi s oštećenjem RPM baze podataka. To je jednostavan alat lak za korištenje koji možete pokrenuti bez opcija. Za učinkovito i pouzdano korištenje trebali biste ga redovito pokretati putem crona.

Možete ga instalirati iz izvora; preuzmite izvorno stablo i instalirajte ga koristeći setup.py (koji bi također trebao preuzeti psutil ovisnost iz 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

Konačno, pokušajte ponovno pokrenuti neuspjelu naredbu rpm ili yum da vidite radi li sve u redu.

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

To je sve! U ovom smo članku objasnili kako ponovno 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, upotrijebite obrazac za povratne informacije u nastavku.