GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So stellen Sie eine beschädigte RPM-Datenbank wieder her (Neuaufbau einer RPM-Datenbank)

Warum die RPM-Datenbank beschädigt wird

Es kann mehrere Gründe geben, die zu einer Beschädigung der RPM-Datenbank führen können. Aufgrund der Einschränkungen kann man dafür keinen einzelnen RCA genau bestimmen, es gibt keinen Mechanismus zur Überwachung der Beschädigung der RPM-Datenbank.

– Die RPM-Datenbank wird jedes Mal abgefragt, wenn ein Administrator/irgendein Prozess einen RPM-Befehl ausführt.
– Selbst während Yum-Transaktionen wird die RPM-Datenbank stark verändert.
– Ein kleiner Zeiger kann ebenfalls eine solche Beschädigung verursachen.
– Wenn LD_LIBRARY_PATH auf einen bestimmten Wert gesetzt ist, wird sogar die RPM-Datenbank beschädigt.
– Wenn ein Drittanbieterpaket installiert wird, das unnötige Änderungen in der RPM-Datenbank verursacht.
– Unvollständige Transaktionen können ebenfalls zu solchen Beschädigungen führen.
– Im Falle einer /var-Partition, die sich auf SAN-Volumes befindet.

Insgesamt können also viele Faktoren für eine solche Beschädigung der RPM-Datenbank in Betracht gezogen werden. Wenn die RPM-Datenbank häufig beschädigt wird, wird empfohlen, regelmäßig eine Sicherungskopie der RPM-Datenbank über cron zu erstellen.

Reparieren Sie die RPM-Datenbank

Das RPM-Tool verwendet seine eigene benutzerdefinierte Datenbankimplementierung, um seine Informationen aufzunehmen. Manchmal kann diese Datenbank beschädigt werden; Zu den Symptomen gehören Behauptungen, dass ein installiertes RPM-Paket fehlt; oder Versuche, ein RPM zu aktualisieren, hängen einfach. Versuche, einige Pakete abzufragen (rpm -q), können mit dem folgenden Fehler fehlschlagen.

rpmdb: /var/lib/rpm/Packages: unexpected file type or format  
error: cannot open Packages index using db3 - Invalid argument (22)

Wenn Ihre RPM-Datenbank hängt oder beschädigt ist, können Sie versuchen, sie mit diesen Befehlen zu reparieren. Bitte beachten Sie:Es kann nicht garantiert werden, dass dieser Vorgang funktioniert. Für diese Schritte müssen Sie mit Superuser-Rechten (auch bekannt als „root“) angemeldet sein. Die Befehle können kopiert und direkt in ein Root-Terminalfenster eingefügt werden.

1. Stellen Sie sicher, dass auf Ihrem System keine RPM-Prozesse mehr ausgeführt werden. Verwenden Sie den Befehl ps, um sie zu identifizieren. Verwenden Sie den Kill-Befehl, um alle „rpm“-Prozesse zu beenden, die Sie finden; ein „kill -9“ kann notwendig sein.

# ps -ef | grep-i rpm

2. Löschen Sie die von RPM verwendeten Sperrdateien:

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

3. Wenn Sie einen hängenden „rpm“-Befehl erlebt haben, versuchen Sie es erneut. Wenn es funktioniert, sind Sie fertig. Wenn nicht, führen Sie die Schritte 1 und 2 erneut aus. Fahren Sie dann mit dem nächsten Schritt fort.

4. Erstellen Sie eine Sicherungskopie Ihrer RPM-Datenbank:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Erstellen Sie Ihre RPM-Datenbank neu:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Versuchen Sie erneut, die RPM-Datenbank zu überprüfen.

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
Hinweis :Wenn die oben genannten Wiederherstellungsschritte fehlschlagen oder Fehler auslösen, ist die Wiederherstellung des Verzeichnisses /var/lib/rpm aus einer aktuellen Systemsicherung möglicherweise die beste Option. Denken Sie daran, die Tar-Sicherung nicht zu überschreiben, da sie immer noch wertvoll sein kann.

6. Wiederholen Sie Ihren fehlgeschlagenen RPM-Befehl.

RPM-Befehlsbeispiele zum Abfragen, Installieren, Entfernen und Aktualisieren von Paketen


Cent OS
  1. So erstellen Sie eine Datenbank in PostgreSQL

  2. Wie stellt man einen Hintergrundjob aus einer früheren Shell wieder her?

  3. So stellen Sie von einem Computer aus eine Remote-Verbindung zu einer MySQL-Datenbank her

  4. So stellen Sie gelöschte RPM-Paketdateien (Bibliotheken, Konfigurationsdateien) in CentOS/RHEL 7 wieder her

  5. Wiederherstellen einer beschädigten RPM-Datenbank

Wie stellt man eine MS SQL-Datenbank von SolidCP wieder her?

Wie stellt man eine MySQL-Datenbank von SolidCP wieder her?

Wie ändere ich das MySQL-Datenbankpasswort von WebsitePanel 2.1?

Wie stellt man die MS SQL-Datenbank von WebsitePanel 2.1 wieder her?

Wie stellt man die MySQL-Datenbank von WebsitePanel 2.1 wieder her?

So stellen Sie eine MySQL-Datenbank aus einer .SQL-Sicherung wieder her