RPM/Troubleshooting
Problèmes de dépendances
Pour visualiser les dépendances d'un paquet
yum deplist <PACKAGE>
ou
rpm -q --required <PACKAGE>
Problèmes suite à une mise à jour
On essaie de remettre une version plus ancienne
yum downgrade <PACKAGE>
ou
rpm -Uvh --oldpackage [--force] <PACKAGE>
On peut maintenant visualiser les mises à jour disponibles
yum list updates <PACKAGE>
Si le problème est résolu, on peut bloquer la version pour ce paquet.
- On installe le plugin yum/dnf
- Yum
yum install yum-plugin-versionlock
- Dnf
dnf install 'dnf-command(versionlock)'
- Yum
- On bloque la version
yum versionlock add <PACKAGE>
Commandes utiles pour gérer les verrous
- Lister les verrous
yum versionlock list
- Débloquer le verrou d'un paquet
yum versionlock del <PACKAGE>
- Débloquer tous les verrous
yum versionlock clear
Problèmes de Bases de données RPM corrompues
- On supprime les blocage: fermeture (normale puis forcée si besoin) des programmes utilisant les bases
lsof | grep /var/lib/rpm
- On supprime les index
rm -f /var/lib/rpm/__db.00*
- On vérifie l'intégrité des bases de données
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/*
- Si une base est corrompue, on peut importer une base à partir d'un export de celle qui est corrompue
mv /var/lib/rpm/Packages /var/lib/rpm/packages.bad
/usr/lib/rpm/rpmdb_dump /var/lib/rpm/Packages.bad | /usr/lib/rpm/rpmdb_load /var/lib/rpm/Packages
- On reconstruit les index
rpm -v --rebuilddb
Vérification des paquets installés et résolution des différences
Pour vérifier que les fichiers d'un paquet RPM soient d'origine, on lance la commande suivante et elle ne doit pas donner de sortie si les fichiers ne sont modifiés. L'option -v affichera tous les fichiers (y compris ceux qui ne sont pas modifiés)
rpm -V <PACKAGE>
De même on peut vérifier tout le système
rpm -Va
On peut aller plus loin avec yum en installant un plugin
yum install yum-plugin-verify
et ainsi vérifier le paquet avec l'argument
- verify: vérifier l'absence de doublon dans les versions et la non-modificcation de fichier (sauf les fichiers de configuration) pour ce paquet
- verify-rpm: chercher toutes les modifications par rapport au paquet:
- S: taille (file Size differs)
- M: permissions (Mode differs,includes permissions and file type)
- 5: somme de contrôle (en général MD5) (5 digest (formerly MD5 sum) differs)
- D: Numéro majeure et mineure pour les fichiers de périphérique de <path>/dev</path> (Device major/minor number mismatch)
- L: cible d'un lien symbolique (readlink path mismatch)
- U: propriétaire (User ownership differs)
- G: groupe (Group ownership differs)
- T: date de dernière modification (mTime differs)
- P: capacités (caPabilities differ): exemple le paquet <package>apache</package> a comme capacité supplémentaire webserver
- all: lance les deux vérifications précédentes
exemple
rpm -Vv b2pweb-release ......... c /etc/pki/rpm-gpg/RPM-GPG-KEY-B2PWEB-7 S.5....T. c /etc/yum.repos.d/b2pweb.repo
On peut voir que le fichier <path>/etc/pki/rpm-gpg/RPM-GPG-KEY-B2PWEB-7</path> est d'origine, alors que le fichier <path>/etc/yum.repos.d/b2pweb.repo</path> a été modifié: Taille (S), checksum (5) et mtime (T) différents.
et maintenant avec yum
yum verify b2pweb-release Modules complémentaires chargés : fastestmirror, verify verify done
Pas de doublon pour ce paquet (multilib, etc...) et les fichiers ne sont pas modifiés (hormis les fichiers de configuration, ce qui est le cas pour <path>/etc/yum.repos.d/b2pweb.repo</path>)
yum verify-rpm b2pweb-release
Modules complémentaires chargés : fastestmirror, verify
==================== Installed Packages ====================
b2pweb-release.noarch : B2PWeb repository
File: /etc/yum.repos.d/b2pweb.repo
Tags: configuration
Problem: checksum does not match
Current: sha256:376f90323acef154dc7f57e087d71522f85f4ce0422a482fcc8f067ef254f94b
Original: sha256:196f897a18f425ed006f1fba965ff7e769e413f42eeea6a4aafe82d0e4c2ba21
--------
Problem: size does not match
Current: 452
Original: 402
--------
Problem: mtime does not match
Current: Fri Jan 29 11:40:03 2016 (279 days, 22:56:31 later)
Original: Fri Apr 24 12:43:32 2015
verify-rpm done
Là on voit mieux ce qui a été modifié
On peut simplement remettre les permissions d'origine avec la commande
rpm --setperms <PACKAGE>
et les bon propriétaires/groupes
rpm --setugids <PACKAGE>
ou avec yum, on ré-installe le tout, mais il faudra gérer les fichiers avec l'extension rpmnew et rpmsave.
yum reinstall <PACKAGE>