Zoeken op website

Hoe u een beschadigde RPM-database in CentOS opnieuw kunt opbouwen


De RPM database bestaat uit bestanden in de map /var/lib/rpm/ in CentOS en andere zakelijke Linux-distributies zoals RHEL, openSUSE, Oracle Linux en meer.

Als de RPM database beschadigd is, zal RPM niet correct werken, waardoor updates niet op uw systeem kunnen worden toegepast. U komt fouten tegen tijdens het updaten van pakketten op uw systeem via YUM pakketbeheer. Het ergste scenario is dat je geen rpm- en yum-commando's met succes kunt uitvoeren.

Lees ook: 20 praktische voorbeelden van RPM-opdrachten in Linux

Er zijn een aantal factoren die kunnen leiden tot beschadiging van de RPM-database, zoals onvolledige eerdere transacties, de installatie van bepaalde software van derden, het verwijderen van specifieke pakketten en vele andere.

In dit artikel laten we zien hoe u een beschadigde RPM-database opnieuw kunt opbouwen; op deze manier kunt u herstellen van een RPM-databasecorruptie in CentOS. Hiervoor zijn rootgebruikersrechten vereist, anders gebruikt u de opdracht sudo om die rechten te verkrijgen.

Herbouw de beschadigde RPM-database in CentOS

Begin eerst met het maken van een back-up van uw huidige RPM-database voordat u doorgaat (u heeft deze mogelijk in de toekomst nodig), met behulp van de volgende opdrachten.

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

Controleer vervolgens de integriteit van het metadatabestand van het hoofdpakket /var/lib/rpm/Packages; dit is het bestand dat opnieuw moet worden opgebouwd, maar verwijder eerst /var/lib/rpm/__db* bestanden om verouderde vergrendelingen te voorkomen met behulp van de volgende opdrachten.

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

Als de bovenstaande bewerking mislukt, wat betekent dat u nog steeds fouten tegenkomt, moet u een nieuwe database dumpen en laden. Controleer ook als volgt de integriteit van het zojuist geladen pakketbestand.


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

Om nu de databaseheaders te controleren, doorzoekt u alle geïnstalleerde pakketten met behulp van de vlaggen -q en -a, en probeert u zorgvuldig eventuele fouten te observeren die naar de worden verzonden. stderror.


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

Als laatste, maar daarom niet minder belangrijk, bouwt u de RPM-database opnieuw op met behulp van de volgende opdracht. Met de optie -vv kunt u veel foutopsporingsinformatie weergeven.

rpm -vv --rebuilddb

Gebruik de dcrpm-tool om de RPM-database te detecteren en te corrigeren

We hebben ook het opdrachtregelprogramma dcrpm (detecteer en corrigeer rpm) ontdekt dat wordt gebruikt om bekende problemen met RPM-databasecorruptie te identificeren en te corrigeren. Het is een eenvoudige en gemakkelijk te gebruiken tool die u zonder opties kunt gebruiken. Voor effectief en betrouwbaar gebruik moet u het regelmatig via cron uitvoeren.

Je kunt het vanaf de bron installeren; download de broncodestructuur en installeer deze met behulp van setup.py (die ook de psutil afhankelijkheid van pypi zou moeten overnemen), zoals weergegeven.

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

Nadat u dcrpm heeft geïnstalleerd, voert u het uit zoals weergegeven.

dcrpm

Probeer ten slotte uw mislukte rpm- of yum-opdracht opnieuw uit te voeren om te zien of alles goed werkt.

dcrpm Github-repository: https://github.com/facebookincubator/dcrpm
Meer informatie vindt u op de RPM-databaseherstelpagina.

Dat is alles! In dit artikel hebben we uitgelegd hoe u een beschadigde RPM-database in CentOS opnieuw kunt opbouwen. Gebruik het onderstaande feedbackformulier om vragen te stellen of uw mening over deze handleiding te delen.