GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment récupérer d'une base de données RPM corrompue (reconstruction d'une base de données RPM)

Pourquoi la base de données rpm est corrompue

Plusieurs raisons peuvent entraîner une corruption de la base de données rpm. On ne peut pas identifier exactement un seul RCA pour cela en raison des limitations, il n'y a pas de mécanisme pour surveiller la corruption de la base de données rpm.

– La base de données rpm est interrogée chaque fois que l'administrateur/un processus exécute une commande rpm.
– Même pendant les transactions yum, la base de données rpm est fortement modifiée.
– Un petit pointeur peut également provoquer une telle corruption.
– Si LD_LIBRARY_PATH est défini sur une valeur, même la base de données rpm est corrompue.
– Si un package tiers est installé, ce qui entraîne des modifications inutiles dans la base de données rpm.
– Des transactions incomplètes peuvent également entraîner de telles corruptions.
– Dans le cas d'une partition /var située sur des volumes SAN.

Donc, au total, de nombreux facteurs peuvent être pris en compte pour une telle corruption de la base de données rpm. Si la base de données rpm est fréquemment corrompue, il est recommandé de sauvegarder fréquemment la base de données RPM via cron.

Réparer la base de données RPM

L'outil RPM utilise sa propre implémentation de base de données personnalisée pour contenir ses informations. Parfois, cette base de données peut être corrompue; les symptômes incluent des affirmations selon lesquelles un package RPM installé est manquant ; ou les tentatives de mise à jour d'un RPM se bloquent simplement. Les tentatives d'interrogation (rpm -q) de certains packages peuvent échouer avec l'erreur ci-dessous.

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

Si votre base de données RPM est bloquée ou corrompue, vous pouvez essayer de la réparer avec ces commandes. Veuillez noter :ce processus n'est pas garanti de fonctionner. Vous devez être connecté avec le privilège de superutilisateur (alias "root") pour ces étapes. Les commandes peuvent être copiées et collées directement dans une fenêtre de terminal racine.

1. Assurez-vous qu'il n'y a plus de processus RPM en cours d'exécution sur votre système. Utilisez la commande ps pour les identifier. Utilisez la commande kill pour mettre fin à tous les processus "rpm" que vous trouvez ; un "kill -9" peut être nécessaire.

# ps -ef | grep-i rpm

2. Supprimez les fichiers de verrouillage utilisés par RPM :

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

3. Si vous rencontriez une commande "rpm" suspendue, essayez à nouveau. Si cela fonctionne, vous avez terminé. Si ce n'est pas le cas, répétez les étapes 1 et 2. Passez ensuite à l'étape suivante.

4. Faites une sauvegarde de votre base de données RPM :

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

5. Reconstruisez votre base de données RPM :

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

6. Essayez de vérifier à nouveau la base de données rpm.

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
Remarque :Si les étapes de récupération ci-dessus échouent ou génèrent des erreurs, la restauration du répertoire /var/lib/rpm à partir d'une sauvegarde système récente peut être votre meilleure option. N'oubliez pas de ne pas écraser la sauvegarde tar car elle peut encore être utile.

6. Réessayez votre commande RPM ayant échoué.

Exemples de commandes RPM pour interroger, installer, supprimer et mettre à niveau des packages


Cent OS
  1. Comment créer une base de données dans PostgreSQL

  2. Comment récupérer un travail en arrière-plan à partir d'un shell précédent ??

  3. Comment se connecter à distance à une base de données MySQL à partir d'un ordinateur

  4. Comment récupérer des fichiers de package rpm supprimés (bibliothèques, fichiers de configuration) dans CentOS/RHEL 7

  5. Reconstruire une base de données RPM corrompue

Comment restaurer une base de données MS SQL depuis SolidCP ?

Comment restaurer une base de données MySQL depuis SolidCP ?

Comment changer le mot de passe de la base de données MySQL depuis WebsitePanel 2.1 ?

Comment restaurer la base de données MS SQL à partir de WebsitePanel 2.1 ?

Comment restaurer la base de données MySQL à partir de WebsitePanel 2.1 ?

Comment restaurer une base de données MySQL à partir d'une sauvegarde .SQL