Kaip atkurti sugadintą RPM duomenų bazę CentOS


RPM duomenų bazę sudaro failai, esantys kataloge/var/lib/rpm/CentOS ir kituose įmonės Linux paskirstymuose, tokiuose kaip RHEL, openSUSE, Oracle Linux ir kt.

Jei RPM duomenų bazė yra sugadinta, RPM neveiks tinkamai, todėl naujinimų negalima pritaikyti jūsų sistemai. Sėkmingai atnaujindami savo sistemos paketus naudodamiesi rpm ir yum komandomis, susiduriate su klaidomis.

Yra daugybė veiksnių, galinčių sukelti RPM duomenų bazės sugadinimą, pavyzdžiui, neišsamios ankstesnės operacijos, tam tikros trečiosios šalies programinės įrangos diegimas, konkrečių paketų pašalinimas ir daugelis kitų.

Šiame straipsnyje mes parodysime, kaip atkurti sugadintą RPM duomenų bazę; tokiu būdu galite atsigauti po RPM duomenų bazės sugadinimo CentOS. Tam reikalingos root vartotojo teisės, priešingu atveju naudokite komandą sudo, kad gautumėte šias privilegijas.

Atkurkite sugadintą RPM duomenų bazę „CentOS“

Pirmiausia pradėkite atsarginę savo dabartinės RPM duomenų bazės kopiją prieš tęsdami (jums gali prireikti ateityje) naudodami šias komandas.

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

Tada patikrinkite pagrindinio paketo metaduomenų failo/var/lib/rpm/Packages vientisumą; tai failas, kurį reikia atstatyti, tačiau pirmiausia pašalinkite/var/lib/rpm/__ db * failus, kad išvengtumėte pasenusių spynų naudodami šias komandas.

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

Jei pirmiau nurodyta operacija nepavyksta, vadinasi, vis tiek susiduriate su klaidomis, turėtumėte iškelti ir įkelti naują duomenų bazę. Taip pat patikrinkite ką tik įkelto „Packages“ failo vientisumą taip.

# 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

Dabar, norėdami patikrinti duomenų bazės antraštes, pateikite užklausą visuose įdiegtuose paketuose naudodami -q ir -a žymas ir pabandykite atidžiai stebėti visas klaidas, išsiųstas į stderror.

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

Paskutinis, bet ne mažiau svarbus dalykas - atkurkite RPM duomenų bazę naudodami šią komandą: parinktis -vv leidžia rodyti daug derinimo informacijos.

# rpm -vv --rebuilddb

Norėdami nustatyti ir ištaisyti RPM duomenų bazę, naudokite įrankį „dcrpm“

Mes taip pat aptikome komandinės eilutės įrankį „dcrpm“ (aptikti ir ištaisyti rpm), naudojamą gerai žinomoms su RPM duomenų bazės korupcija susijusioms problemoms nustatyti ir ištaisyti. Tai paprastas ir lengvai naudojamas įrankis, kurį galite paleisti be pasirinkimo. Norėdami efektyviai ir patikimai naudoti, turėtumėte reguliariai jį paleisti per „cron“.

Galite jį įdiegti iš šaltinio; atsisiųskite šaltinio medį ir įdiekite jį naudodami setup.py (kuris taip pat turėtų paimti priklausomybę nuo psutil iš pypi), kaip parodyta.

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

Įdiegę „dcrpm“, paleiskite jį taip, kaip parodyta.

# dcrpm

Galiausiai pabandykite dar kartą paleisti nepavykusią „rpm“ arba „yum“ komandą, kad sužinotumėte, ar viskas gerai.

„dcrpm Github“ saugykla: https://github.com/facebookincubator/dcrpm
Daugiau informacijos galite rasti RPM duomenų bazės atkūrimo puslapyje.

Tai viskas! Šiame straipsnyje mes paaiškinome, kaip atkurti sugadintą RPM duomenų bazę „CentOS“. Jei norite užduoti klausimų ar pasidalinti mintimis apie šį vadovą, naudokite toliau pateiktą atsiliepimų formą.