Hvernig á að endurbyggja skemmd RPM gagnagrunn í CentOS


RPM gagnagrunnurinn samanstendur af skrám undir /var/lib/rpm/ skránni í CentOS og öðrum Linux dreifingum fyrirtækja eins og RHEL, openSUSE, Oracle Linux og fleira.

Ef RPM gagnagrunnurinn er skemmdur mun RPM ekki virka rétt og því er ekki hægt að beita uppfærslum á kerfið þitt, þú lendir í villum þegar þú uppfærir pakka á kerfinu þínu með rpm og yum skipunum með góðum árangri.

Það eru nokkrir þættir sem geta leitt til spillingar á RPM gagnagrunninum, svo sem ófullnægjandi fyrri færslur, uppsetning á tilteknum hugbúnaði frá þriðja aðila, fjarlægja tiltekna pakka og margt fleira.

Í þessari grein munum við sýna hvernig á að endurbyggja skemmd RPM gagnagrunn; þannig geturðu batnað eftir RPM gagnagrunnsspillingu í CentOS. Þetta krefst rótnotendaréttinda, annars skaltu nota sudo skipunina til að öðlast þessi réttindi.

Endurbyggðu skemmdan RPM gagnagrunn í CentOS

Byrjaðu fyrst á því að taka öryggisafrit af núverandi RPM gagnagrunni áður en þú heldur áfram (þú gætir þurft á því að halda í framtíðinni), með því að nota eftirfarandi skipanir.

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

Næst skaltu staðfesta heilleika aðalpakkans lýsigagnaskrár /var/lib/rpm/Packages; þetta er skráin sem þarf að endurbyggja, en fjarlægðu fyrst /var/lib/rpm/__db* skrár til að koma í veg fyrir gamaldags læsingar með því að nota eftirfarandi skipanir.

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

Ef ofangreind aðgerð mistekst, sem þýðir að þú lendir enn í villum, þá ættir þú að henda og hlaða nýjum gagnagrunni. Staðfestu einnig heilleika nýhlaðnu pakkaskráarinnar sem hér segir.

# 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

Nú til að athuga gagnagrunnshausana skaltu spyrjast fyrir um alla uppsetta pakka með því að nota -q og -a fánana og reyna að fylgjast vel með öllum villum sem sendar eru til stderror.

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

Síðast en ekki síst, endurbyggðu RPM gagnagrunninn með því að nota eftirfarandi skipun, -vv valkosturinn gerir kleift að birta fullt af villuleitarupplýsingum.

# rpm -vv --rebuilddb

Notaðu dcrpm tól til að greina og leiðrétta RPM gagnagrunn

Við uppgötvuðum líka dcrpm (greina og leiðrétta rpm) skipanalínutólið sem notað er til að bera kennsl á og leiðrétta vel þekkt vandamál sem tengjast RPM gagnagrunnsspillingu. Það er einfalt og auðvelt í notkun tól sem þú getur keyrt án valkosts. Fyrir skilvirka og áreiðanlega notkun ættirðu að keyra það reglulega í gegnum cron.

Þú getur sett það upp frá uppruna; halaðu niður upprunatrénu og settu það upp með því að nota setup.py (sem ætti líka að grípa psutil ósjálfstæði frá pypi), eins og sýnt er.

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

Þegar þú hefur sett upp dcrpm skaltu keyra það eins og sýnt er.

# dcrpm

Að lokum skaltu reyna að keyra misheppnaða rpm eða yum skipunina þína aftur til að sjá hvort allt virkar vel.

dcrpm Github geymsla: https://github.com/facebookincubator/dcrpm
Þú getur fundið frekari upplýsingar á endurheimtarsíðu RPM gagnagrunns.

Það er allt og sumt! Í þessari grein höfum við útskýrt hvernig á að endurbyggja skemmd RPM gagnagrunn í CentOS. Til að spyrja spurninga eða deila hugsunum þínum um þessa handbók, notaðu athugasemdareyðublaðið hér að neðan.