Hvordan gjenoppbygge ødelagt RPM-database i CentOS
RPM-databasen består av filer under /var/lib/rpm/-katalogen i CentOS og andre Linux-distribusjoner for bedrifter som for eksempel RHEL, openSUSE, Oracle Linux og mer.
Hvis RPM-databasen er ødelagt, vil ikke RPM fungere riktig, og oppdateringer kan derfor ikke brukes på systemet ditt, du støter på feil mens du oppdaterer pakker på systemet ditt via YUM-pakkebehandling. Det verste tilfellet er å ikke kunne kjøre noen rpm- og yum-kommandoer.
Les også: 20 praktiske eksempler på RPM-kommandoer i Linux
Det er en rekke faktorer som kan føre til korrupsjon av RPM-databasen, for eksempel ufullstendige tidligere transaksjoner, installasjon av viss tredjepartsprogramvare, fjerning av spesifikke pakker og mange andre.
I denne artikkelen vil vi vise hvordan du gjenoppbygger en ødelagt RPM-database; på denne måten kan du gjenopprette fra en RPM-databasekorrupsjon i CentOS. Dette krever root-brukerprivilegier, ellers bruker du sudo-kommandoen for å få disse privilegiene.
Gjenoppbygg ødelagt RPM-database i CentOS
Start først med å sikkerhetskopiere din nåværende RPM-database før du fortsetter (du kan trenge det i fremtiden), ved å bruke følgende kommandoer.
mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz /var/lib/rpm
Deretter bekrefter du integriteten til hovedpakkens metadatafil /var/lib/rpm/Packages; dette er filen som må gjenoppbygges, men fjern først /var/lib/rpm/__db*-filer for å forhindre foreldede låser ved å bruke følgende kommandoer.
rm -f /var/lib/rpm/__db*
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages
I tilfelle operasjonen ovenfor mislykkes, noe som betyr at du fortsatt støter på feil, bør du dumpe og laste en ny database. Kontroller også integriteten til den nylastede pakkefilen som følger.
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å for å sjekke databasehodene, spør etter alle installerte pakker ved å bruke -q
- og -a
-flaggene, og prøv nøye å observere eventuelle feil som sendes til stderror.
rpm -qa >/dev/null #output is discarded to enable printing of errors only
Sist, men ikke minst, gjenoppbygg RPM-databasen ved å bruke følgende kommando, alternativet -vv
lar deg vise mye feilsøkingsinformasjon.
rpm -vv --rebuilddb
Bruk dcrpm-verktøyet for å oppdage og korrigere RPM-database
Vi oppdaget også kommandolinjeverktøyet dcrpm (oppdag og korriger rpm) som brukes til å identifisere og rette opp velkjente problemer med RPM-databasekorrupsjon. Det er et enkelt og brukervennlig verktøy som du kan kjøre uten valg. For effektiv og pålitelig bruk bør du kjøre den regelmessig via cron.
Du kan installere det fra kilden; last ned kildetreet og installer det ved å bruke setup.py (som også bør ta psutil-avhengigheten fra pypi), som vist.
git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install
Når du har installert dcrpm, kjør den som vist.
dcrpm
Til slutt, prøv å kjøre den mislykkede rpm- eller yum-kommandoen din igjen for å se om alt fungerer bra.
dcrpm Github-depot: https://github.com/facebookincubator/dcrpm
Du kan finne mer informasjon fra RPM-databasegjenopprettingssiden.
Det er alt! I denne artikkelen har vi forklart hvordan du gjenoppbygger en ødelagt RPM-database i CentOS. For å stille spørsmål eller dele tankene dine om denne veiledningen, bruk tilbakemeldingsskjemaet nedenfor.