Kā atjaunot bojātu RPM datu bāzi CentOS


RPM datu bāzi veido faili, kas atrodas direktorijā/var/lib/rpm/CentOS un citos uzņēmuma Linux izplatījumos, piemēram, RHEL, openSUSE, Oracle Linux un citur.

Ja RPM datu bāze ir bojāta, RPM nedarbosies pareizi, tāpēc atjauninājumus nevar piemērot jūsu sistēmai, veiksmīgi atjauninot sistēmas paketes, izmantojot rpm un yum, rodas kļūdas.

Ir vairāki faktori, kas var izraisīt RPM datu bāzes korupciju, piemēram, nepilnīgi iepriekšējie darījumi, noteiktas trešās puses programmatūras instalēšana, īpašu pakotņu noņemšana un daudzi citi.

Šajā rakstā mēs parādīsim, kā atjaunot bojātu RPM datu bāzi; šādā veidā jūs varat atgūties no RPM datu bāzes korupcijas CentOS. Tam nepieciešamas root lietotāja privilēģijas, pretējā gadījumā izmantojiet komandu sudo, lai iegūtu šīs privilēģijas.

CentOS atjaunot bojātu RPM datu bāzi

Pirms turpināt, vispirms sāciet dublēt pašreizējo RPM datu bāzi (jums tas varētu būt vajadzīgs nākotnē), izmantojot šādas komandas.

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

Pēc tam pārbaudiet galvenā paketes metadatu faila/var/lib/rpm/Packages integritāti; šis ir fails, kas jāatjauno, bet vispirms noņemiet/var/lib/rpm/__ db * failus, lai novērstu novecojušas bloķēšanas, izmantojot šādas komandas.

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

Gadījumā, ja iepriekš minētā darbība neizdodas, tas nozīmē, ka joprojām rodas kļūdas, jums vajadzētu izmest un ielādēt jaunu datu bāzi. Pārbaudiet arī svaigi ielādētā Packages faila integritāti šādi.

# 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

Tagad, lai pārbaudītu datu bāzes galvenes, vaicājiet visām instalētajām pakotnēm, izmantojot karodziņus -q un -a , un mēģiniet uzmanīgi novērot visas kļūdas, kas nosūtītas stderror.

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

Visbeidzot, atjaunojiet RPM datu bāzi, izmantojot šādu komandu: opcija -vv ļauj parādīt daudz atkļūdošanas informācijas.

# rpm -vv --rebuilddb

Izmantojiet rīku dcrpm, lai noteiktu un labotu RPM datu bāzi

Mēs arī atklājām komandrindas rīku dcrpm (atklāt un izlabot apgriezienus minūtē), ko izmanto, lai identificētu un izlabotu labi zināmas problēmas saistībā ar RPM datu bāzes korupciju. Tas ir vienkāršs un viegli lietojams rīks, kuru varat palaist bez izvēles. Lai nodrošinātu efektīvu un uzticamu lietošanu, jums tas regulāri jādarbina, izmantojot cron.

To var instalēt no avota; lejupielādējiet avota koku un instalējiet to, izmantojot setup.py (kam vajadzētu paņemt arī psutil atkarību no pypi), kā parādīts.

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

Kad esat instalējis dcrpm, palaidiet to, kā parādīts.

# dcrpm

Visbeidzot, mēģiniet vēlreiz palaist neizdevušos apgr./min vai yum komandu, lai redzētu, vai viss darbojas labi.

dcrpm Github krātuve: https://github.com/facebookincubator/dcrpm
Plašāku informāciju varat atrast RPM datu bāzes atkopšanas lapā.

Tas ir viss! Šajā rakstā mēs esam paskaidrojuši, kā atjaunot bojātu RPM datu bāzi CentOS. Lai uzdotu jautājumus vai dalītos domās par šo rokasgrāmatu, izmantojiet tālāk sniegto atsauksmju veidlapu.