Vioittun RPM-tietokannan uudelleen rakentaminen CentOS: ssä


RPM-tietokanta koostuu tiedostoista /var/lib/rpm/-hakemistossa CentOS:ssä ja muissa yritys Linux-jakeluissa, kuten >RHEL, openSUSE, Oracle Linux ja paljon muuta.

Jos RPM-tietokanta on vioittunut, RPM ei toimi oikein, joten päivityksiä ei voida ottaa käyttöön järjestelmässäsi, kohtaat virheitä päivitettäessä paketteja järjestelmässäsi YUM-paketinhallinnan kautta. Pahimmassa tapauksessa rpm- ja yum-komentojen suorittaminen ei onnistu.

Lue myös: 20 käytännön esimerkkiä RPM-komennoista Linuxissa

On useita tekijöitä, jotka voivat johtaa RPM-tietokannan vioittumiseen, kuten epätäydelliset aikaisemmat tapahtumat, tiettyjen kolmannen osapuolen ohjelmistojen asennus, tiettyjen pakettien poistaminen ja monet muut.

Tässä artikkelissa näytämme, kuinka vioittunut RPM-tietokanta rakennetaan uudelleen; Tällä tavalla voit toipua CentOS:n RPM-tietokannan vioittumisesta. Tämä edellyttää pääkäyttäjän oikeuksia, muuten käytä sudo-komentoa saadaksesi nämä oikeudet.

Rakenna vioittunut RPM-tietokanta uudelleen CentOS:ssä

Aloita ensin varmuuskopioimalla nykyinen RPM-tietokanta ennen jatkamista (saatat tarvita sitä tulevaisuudessa) käyttämällä seuraavia komentoja.

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

Tarkista seuraavaksi pääpaketin metatietotiedoston /var/lib/rpm/Packages eheys. tämä on tiedosto, joka on rakennettava uudelleen, mutta poista ensin /var/lib/rpm/__db*-tiedostot estääksesi vanhentuneet lukitukset seuraavien komentojen avulla.

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

Jos yllä oleva toiminto epäonnistuu, eli kohtaat edelleen virheitä, sinun tulee tyhjentää ja ladata uusi tietokanta. Tarkista myös juuri ladatun Packages-tiedoston eheys seuraavasti.


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

Tarkista nyt tietokannan otsikot tekemällä kyselyn kaikista asennetuista paketeista käyttämällä -q- ja -a-lippuja ja yritä tarkkailla huolellisesti -osoitteeseen lähetettyjä virheitä. stderror.


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

Viimeisenä mutta ei vähäisimpänä, rakenna RPM-tietokanta uudelleen seuraavalla komennolla. -vv-vaihtoehto mahdollistaa paljon virheenkorjaustietoja.

rpm -vv --rebuilddb

Käytä dcrpm-työkalua RPM-tietokannan tunnistamiseen ja korjaamiseen

Löysimme myös dcrpm (detect and correct rpm) -komentorivityökalun, jota käytetään tunnistamaan ja korjaamaan tunnettuja RPM-tietokannan vioittumiseen liittyviä ongelmia. Se on yksinkertainen ja helppokäyttöinen työkalu, jota voit käyttää ilman vaihtoehtoja. Tehokkaan ja luotettavan käytön varmistamiseksi sinun tulee suorittaa se säännöllisesti cronin kautta.

Voit asentaa sen lähteestä; lataa lähdepuu ja asenna se käyttämällä setup.py-tiedostoa (jonka pitäisi napata myös psutil-riippuvuus pypistä), kuten kuvassa.

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

Kun olet asentanut dcrpm, suorita se kuvan mukaisesti.

dcrpm

Yritä lopuksi suorittaa epäonnistunut rpm- tai yum-komento uudelleen nähdäksesi, toimiiko kaikki hyvin.

dcrpm Github-arkisto: https://github.com/facebookincubator/dcrpm
Löydät lisätietoja RPM-tietokannan palautussivulta.

Siinä kaikki! Tässä artikkelissa olemme selittäneet, kuinka vioittunut RPM-tietokanta rakennetaan uudelleen CentOS:ssä. Jos haluat esittää kysymyksiä tai jakaa ajatuksesi tästä oppaasta, käytä alla olevaa palautelomaketta.