Website-Suche

So erstellen Sie eine beschädigte RPM-Datenbank in CentOS neu


Die RPM-Datenbank besteht aus Dateien im Verzeichnis /var/lib/rpm/ in CentOS und anderen Enterprise-Linux-Distributionen wie RHEL, openSUSE, Oracle Linux und mehr.

Wenn die RPM-Datenbank beschädigt ist, funktioniert RPM nicht ordnungsgemäß, sodass Aktualisierungen nicht auf Ihr System angewendet werden können. Beim Aktualisieren von Paketen auf Ihrem System über den YUM-Paketmanager treten Fehler auf. Das schlimmste Szenario besteht darin, dass keine rpm- und yum-Befehle erfolgreich ausgeführt werden können.

Lesen Sie auch: 20 praktische Beispiele für RPM-Befehle unter Linux

Es gibt eine Reihe von Faktoren, die zur Beschädigung der RPM-Datenbank führen können, z. B. unvollständige vorherige Transaktionen, die Installation bestimmter Software von Drittanbietern, das Entfernen bestimmter Pakete und viele andere.

In diesem Artikel zeigen wir, wie man eine beschädigte RPM-Datenbank wiederherstellt; Auf diese Weise können Sie eine RPM-Datenbankbeschädigung in CentOS wiederherstellen. Dies erfordert Root-Benutzerrechte. Andernfalls verwenden Sie den Befehl sudo, um diese Rechte zu erlangen.

Erstellen Sie eine beschädigte RPM-Datenbank in CentOS neu

Erstellen Sie zunächst ein Backup Ihrer aktuellen RPM-Datenbank, bevor Sie mit den folgenden Befehlen fortfahren (möglicherweise benötigen Sie diese in Zukunft).

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

Überprüfen Sie als Nächstes die Integrität der Metadatendatei des Masterpakets /var/lib/rpm/Packages; Dies ist die Datei, die neu erstellt werden muss. Entfernen Sie jedoch zunächst die Dateien /var/lib/rpm/__db*, um veraltete Sperren zu verhindern, indem Sie die folgenden Befehle verwenden.

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

Falls der obige Vorgang fehlschlägt und weiterhin Fehler auftreten, sollten Sie einen Dump durchführen und eine neue Datenbank laden. Überprüfen Sie außerdem die Integrität der frisch geladenen Paketdatei wie folgt.


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

Um nun die Datenbank-Header zu überprüfen, fragen Sie alle installierten Pakete mit den Flags -q und -a ab und versuchen Sie, alle an gesendeten Fehler sorgfältig zu beobachten stderror.


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

Zu guter Letzt erstellen Sie die RPM-Datenbank mit dem folgenden Befehl neu. Die Option -vv ermöglicht die Anzeige zahlreicher Debugging-Informationen.

rpm -vv --rebuilddb

Verwenden Sie das Tool dcrpm, um die RPM-Datenbank zu erkennen und zu korrigieren

Wir haben auch das Befehlszeilentool dcrpm (RPM erkennen und korrigieren) entdeckt, mit dem bekannte Probleme im Zusammenhang mit der Beschädigung der RPM-Datenbank identifiziert und behoben werden können. Es handelt sich um ein einfaches und benutzerfreundliches Tool, das Sie ohne Option ausführen können. Für eine effektive und zuverlässige Nutzung sollten Sie es regelmäßig über cron ausführen.

Sie können es von der Quelle installieren; Laden Sie den Quellbaum herunter und installieren Sie ihn mit setup.py (wodurch auch die psutil-Abhängigkeit von pypi übernommen werden sollte), wie gezeigt.

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

Sobald Sie dcrpm installiert haben, führen Sie es wie gezeigt aus.

dcrpm

Versuchen Sie abschließend, Ihren fehlgeschlagenen rpm- oder yum-Befehl erneut auszuführen, um zu sehen, ob alles einwandfrei funktioniert.

dcrpm Github-Repository: https://github.com/facebookincubator/dcrpm
Weitere Informationen finden Sie auf der Seite zur Wiederherstellung der RPM-Datenbank.

Das ist alles! In diesem Artikel haben wir erklärt, wie man eine beschädigte RPM-Datenbank in CentOS wiederherstellt. Wenn Sie Fragen stellen oder Ihre Gedanken zu diesem Leitfaden mitteilen möchten, verwenden Sie das unten stehende Feedback-Formular.