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 korrekt, daher können Updates nicht auf Ihr System angewendet werden, Sie stoßen auf Fehler beim Aktualisieren von Paketen auf Ihrem System über den YUM-Paketmanager. Das Worst-Case-Szenario ist, dass keine rpm- und yum-Befehle erfolgreich ausgeführt werden können.

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

Es gibt eine Reihe von Faktoren, die zur Beschädigung der RPM-Datenbank führen können, wie 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 Sie eine beschädigte RPM-Datenbank wiederherstellen können. Auf diese Weise können Sie eine Beschädigung der RPM-Datenbank in CentOS wiederherstellen. Dies erfordert Root-Benutzerrechte, andernfalls verwenden Sie den Befehl sudo, um diese Berechtigungen zu erhalten.

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

Beginnen Sie zunächst mit der Sicherung Ihrer aktuellen RPM-Datenbank, bevor Sie fortfahren (möglicherweise werden Sie sie in Zukunft benötigen), indem Sie die folgenden Befehle verwenden.

# 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 Master-Pakets /var/lib/rpm/Packages. Dies ist die Datei, die neu erstellt werden muss, aber entfernen Sie zuerst /var/lib/rpm/__db*-Dateien, um veraltete Sperren mit den folgenden Befehlen zu verhindern.

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

Falls der obige Vorgang fehlschlägt, was bedeutet, dass weiterhin Fehler auftreten, sollten Sie eine neue Datenbank sichern und laden. Überprüfen Sie außerdem die Integrität der neu 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 Datenbankheader zu überprüfen, fragen Sie alle installierten Pakete mit den Flags -q und -a ab und versuchen Sie, alle Fehler, die an den stderror gesendet werden, sorgfältig zu beobachten.


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

Zu guter Letzt können Sie die RPM-Datenbank mit dem folgenden Befehl neu erstellen, die Option -vv ermöglicht die Anzeige vieler Debugging-Informationen.

# rpm -vv --rebuilddb

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

Wir haben auch das Befehlszeilentool dcrpm (detect and correct rpm) entdeckt, mit dem bekannte Probleme im Zusammenhang mit der Beschädigung von RPM-Datenbanken identifiziert und behoben werden können. Es ist ein einfaches und leicht zu bedienendes Tool, das Sie ohne Option ausführen können. Für eine effektive und zuverlässige Nutzung sollten Sie es regelmäßig über cron laufen lassen.

Sie können es aus dem Quellcode installieren. Laden Sie den Quellbaum herunter und installieren Sie ihn mit setup.py (der auch die PSUTIL-Abhängigkeit von pypi abrufen sollte), wie gezeigt.

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

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

# dcrpm

Versuchen Sie abschließend, Ihren fehlgeschlagenen Befehl rpm oder yum 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 Sie eine beschädigte RPM-Datenbank in CentOS neu erstellen. Wenn Sie Fragen stellen oder Ihre Gedanken zu diesem Leitfaden teilen möchten, verwenden Sie das untenstehende Feedback-Formular.

Verwandte Artikel: