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.