Kako obnoviti poškodovano bazo podatkov RPM v CentOS -u


Bazo podatkov RPM sestavljajo datoteke v imeniku/var/lib/rpm/v CentOS -u in drugih distribucijah Linuxa za podjetja, kot so RHEL, openSUSE, Oracle Linux in druge.

Če je baza podatkov RPM poškodovana, RPM ne bo deloval pravilno, zato posodobitev ni mogoče uporabiti za vaš sistem, pri posodobitvi paketov v sistemu z ukazi rpm in yum naletite na napake.

Številni dejavniki lahko privedejo do okvare baze podatkov RPM, na primer nepopolne prejšnje transakcije, namestitev določene programske opreme drugih proizvajalcev, odstranitev določenih paketov in mnogi drugi.

V tem članku bomo pokazali, kako obnoviti poškodovano bazo podatkov RPM; na ta način si lahko opomorete od poškodovane baze podatkov RPM v CentOS -u. To zahteva pravice uporabnika root, sicer uporabite te ukaze sudo.

Obnovite poškodovano bazo podatkov RPM v CentOS -u

Najprej začnite tako, da varnostno kopirate trenutno zbirko podatkov RPM, preden nadaljujete (morda jo boste potrebovali v prihodnosti), z uporabo naslednjih ukazov.

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

Nato preverite integriteto datoteke metapodatkov glavnega paketa/var/lib/rpm/Packages; to je datoteka, ki jo je treba obnoviti, vendar najprej odstranite datoteke/var/lib/rpm/__ db*, da preprečite zastarele ključavnice z naslednjimi ukazi.

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

Če zgornja operacija ne uspe, kar pomeni, da še vedno naletite na napake, morate izpisati in naložiti novo bazo podatkov. Prav tako preverite celovitost sveže naložene datoteke paketov, kot sledi.

# 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

Zdaj, da preverite glave baze podatkov, poizvedite vse nameščene pakete z zastavicama -q in -a in poskusite pozorno opazovati vse napake, poslane strežniku stderror.

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

Nenazadnje obnovite bazo podatkov RPM z naslednjim ukazom, možnost -vv omogoča prikaz veliko informacij o odpravljanju napak.

# rpm -vv --rebuilddb

Uporabite orodje dcrpm za odkrivanje in popravljanje baze podatkov RPM

Odkrili smo tudi orodje ukazne vrstice dcrpm (zaznavanje in odpravljanje vrtljajev), ki se uporablja za ugotavljanje in odpravljanje znanih težav, povezanih s poškodovanostjo baze podatkov RPM. To je preprosto in enostavno orodje, ki ga lahko uporabljate brez možnosti. Za učinkovito in zanesljivo uporabo ga morate redno izvajati prek crona.

Namestite ga lahko iz vira; prenesite izvorno drevo in ga namestite s programom setup.py (ki bi moral zajeti odvisnost psutil tudi od pypi), kot je prikazano.

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

Ko namestite dcrpm, ga zaženite, kot je prikazano.

# dcrpm

Nazadnje poskusite znova zagnati neuspeli ukaz rpm ali yum, da preverite, ali vse deluje v redu.

skladišče Github dcrpm: https://github.com/facebookincubator/dcrpm
Več informacij najdete na strani za obnovitev baze podatkov RPM.

To je vse! V tem članku smo razložili, kako obnoviti poškodovano bazo podatkov RPM v CentOS -u. Če želite postaviti vprašanja ali izraziti svoje mnenje o tem priročniku, uporabite spodnji obrazec za povratne informacije.