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.