Il y a quelques jours, l'un de nos clients a signalé qu'il ne pouvait installer aucun package à l'aide de la commande yum avec CentOS Linux. Après enquête, j'ai découvert que la base de données RPM était corrompue. Il s'agit d'un problème très courant sur les serveurs CentOS et RHEL.
Les serveurs CentOS et RHEL utilisent RPM pour gérer l'installation, la suppression et les mises à niveau des packages. Si la base de données RPM est corrompue d'une manière ou d'une autre, les autres outils système qui s'appuient sur RPM, tels que Yum/Dnf, cesseront de fonctionner.
Comment puis-je reconstruire la base de données RPM sur CentOS ou RHEL ?
Installez certaines exigences pour vous assurer que vous pouvez réparer votre base de données RPM :
yum install db4-utils yum-utils -y
Assurez-vous toujours d'avoir une sauvegarde de votre base de données RPM actuelle
rsync -avpr /var/lib/rpm /var/lib/rpm.bak
Reconstruire une base de données RPM corrompue :2 solutions
1) Supprimez les fichiers de base de données RPM et reconstruisez :
rm /var/lib/__db* -fv rpm --rebuilddb
La commande rpm –rebuilddb reconstruit la base de données RPM en fonction du fichier /var/lib/rpm/Packages. Les fichiers "Packages" sont nécessaires pour reconstruire votre base de données RPM. Sur les serveurs lents, cette commande peut prendre un certain temps à s'exécuter.
Essayez d'utiliser yum normalement maintenant, si cela ne résout pas votre problème, passez à l'étape 2 :
2) Recharger les packages RPM
Une autre stratégie intéressante pour reconstruire votre base de données RPM corrompue consiste à utiliser les outils db_dump et db_load. Dans l'exemple ci-dessous, nous utiliserons db_dump pour vider le fichier Packages, puis db_load sera utilisé pour recharger le fichier Packages. Il s'agit d'un autre moyen de résoudre les problèmes de RPM Db :
cd /var/lib/rpmdb mv Packages Packages.bak db_dump Packages.bak | db_load Packages
En tant que contrôle d'intégrité supplémentaire, interrogez tous les en-têtes de la base de données
rpm -qa
Enfin, reconstruisez la base de données RPM :
rpm --rebuilddb
À ce stade, votre base de données RPM devrait à nouveau fonctionner pleinement. Veuillez nous faire savoir si ces deux étapes ne fonctionnent pas pour vous, ou si vous connaissez d'autres solutions à partager avec nous.
Autres lectures
- Reconstruire une base de données RPM, par rpm.org :http://www.rpm.org/max-rpm/ch-rpm-miscellania.html
- Reconstruction de la base de données RPM, par :fedoraproject.org : http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s05s02.html
- Récupération de base de données RPM sur RHEL, par Daniel Berrange : http://people.redhat.com/berrange/notes/rpmrecovery.html
La reconstruction d'une base de données RPM corrompue a été modifiée pour la dernière fois :le 7 février 2017 par Esteban Borges