« RPM : Récupérer la base de données » : différence entre les versions

De Adadov.net wiki
Aucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{EnCours|auteur=Adadov}}
{{Auteur|Adadov}}


This document provides an overview of how to deal with RPM database corruption.
Il arrive que la base de données RPM se mette en erreur, il est toujours utile d'avoir sous la main la procédure pour la remettre sur pieds.
 
== Removing stale locks ==


== Supprimer le fichier de lock ==
Si une commande RPM se bloque, plante ou disfonctionne, il faut commencer par vérifier les fichiers de lock. On peut le faire avec -CA sur la commande rpmdb_stat:
Si une commande RPM se bloque, plante ou disfonctionne, il faut commencer par vérifier les fichiers de lock. On peut le faire avec -CA sur la commande rpmdb_stat:


Ligne 10 : Ligne 9 :
/usr/lib/rpm/rpmdb_stat -CA}}
/usr/lib/rpm/rpmdb_stat -CA}}


== DB corruption recovery process ==
== Reconstruire la base de données RPM ==
 
Si après le nettoyage les problèmes persistes, la base est probablement corrompue. Il se peut aussi que vous ayez directement reçu un message vous annonçant la corruption ...
Si après le nettoyage les problèmes persistes, la base est probablement corrompue. Il se peut aussi que vous ayez directement reçu un message vous annonçant la corruption ...


Dans ce cas il vous faudra reconstruire les metadonnées. Cette action est '''DESTRUCTIVE''' pensez bien à faire une sauvegarde avant en cas de soucis.
Dans ce cas il vous faudra reconstruire les metadonnées. Cette action est '''DESTRUCTIVE''' pensez bien à faire une sauvegarde avant en cas de soucis.
{{LxTerm|user=root|cd /var/lib
{{LxTerm|user=root|cd /var/lib
tar zcvf /var/preserve/rpmdb-`date +"%d%m%Y"`.tar.gz rpm}}
tar zcvf /var/preserve/rpmdb-`date +"%d%m%Y"`.tar.gz rpm}}


Ensuite on vérifie l'intégrité du fichier Packages.
Ensuite on vérifie l'intégrité du fichier Packages.
{{LxTerm|user=root|cd /var/lib/rpm
{{LxTerm|user=root|cd /var/lib/rpm
rm -f __db*      # to avoid stale locks
rm -f __db*      # to avoid stale locks
Ligne 26 : Ligne 22 :


Si vous obtenez une erreur, régénérez le.
Si vous obtenez une erreur, régénérez le.
{{LxTerm|user=root|mv Packages Packages.orig
{{LxTerm|user=root|mv Packages Packages.orig
/usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_dump Packages.orig {{!}} /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages}}
/usr/lib/rpm/rpmdb_verify Packages}}


If the Packages file now passes the verify step, then as an additional sanity check query all headers in the DB by doing, and watch for any messages sent to standard error (it helps to discard standard out when looking for this):
Pour vérifier que tout est en ordre vous pouvez utiliser la fonction suivante:
 
{{LxTerm|user=root|rpm -qa 1> /dev/null}}
{{LxTerm|user=root|rpm -qa 1> /dev/null}}


If this query passes without generating any messages to standard error, then it is time to rebuild the indexes by invoking:
Il ne restera plus qu'à reconstruire les métadonnées elles-mêmes:
 
{{LxTerm|user=root|rpm -v --rebuilddb}}
{{LxTerm|user=root|rpm -v --rebuilddb}}


At this point you should have a functioning RPM database again. If any of the recovery steps failed, then a bug should be reported. When creating the report, provide the tar.gz backup of the RPM DB as an attachment, along with any daily package list log files named /var/log/rpm*.
Votre base de RPM devrait de nouveau fonctionner.


[[Category:RPM]]
[[Category:RPM]]
[[Category:SysAdmin]]
[[Category:SysAdmin]]
[[Category:Article à traduire]]

Dernière version du 14 août 2018 à 14:28

Ecrit Par : Adadov


Il arrive que la base de données RPM se mette en erreur, il est toujours utile d'avoir sous la main la procédure pour la remettre sur pieds.

Supprimer le fichier de lock[modifier | modifier le wikicode]

Si une commande RPM se bloque, plante ou disfonctionne, il faut commencer par vérifier les fichiers de lock. On peut le faire avec -CA sur la commande rpmdb_stat:

[root@linux] # cd /var/lib/rpmdblclick to copy
[root@linux] # /usr/lib/rpm/rpmdb_stat -CA

Reconstruire la base de données RPM[modifier | modifier le wikicode]

Si après le nettoyage les problèmes persistes, la base est probablement corrompue. Il se peut aussi que vous ayez directement reçu un message vous annonçant la corruption ...

Dans ce cas il vous faudra reconstruire les metadonnées. Cette action est DESTRUCTIVE pensez bien à faire une sauvegarde avant en cas de soucis.

[root@linux] # cd /var/libdblclick to copy
[root@linux] # tar zcvf /var/preserve/rpmdb-`date +"%d%m%Y"`.tar.gz rpm

Ensuite on vérifie l'intégrité du fichier Packages.

[root@linux] # cd /var/lib/rpmdblclick to copy
[root@linux] # rm -f __db* # to avoid stale locks
[root@linux] # /usr/lib/rpm/rpmdb_verify Packages

Si vous obtenez une erreur, régénérez le.

[root@linux] # mv Packages Packages.origdblclick to copy
[root@linux] # /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages
[root@linux] # /usr/lib/rpm/rpmdb_verify Packages

Pour vérifier que tout est en ordre vous pouvez utiliser la fonction suivante:

[root@linux] # rpm -qa 1> /dev/nulldblclick to copy

Il ne restera plus qu'à reconstruire les métadonnées elles-mêmes:

[root@linux] # rpm -v --rebuilddbdblclick to copy

Votre base de RPM devrait de nouveau fonctionner.