RPM/Troubleshooting

De TartareFR
Aller à la navigation Aller à la recherche

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.

  1. On installe le plugin yum/dnf
    • Yum
      yum install yum-plugin-versionlock
    • Dnf
      dnf install 'dnf-command(versionlock)'
  2. 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

  1. On supprime les blocage: fermeture (normale puis forcée si besoin) des programmes utilisant les bases
    lsof | grep /var/lib/rpm
  2. On supprime les index
    rm -f /var/lib/rpm/__db.00*
  3. On vérifie l'intégrité des bases de données
    /usr/lib/rpm/rpmdb_verify /var/lib/rpm/*
  4. 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
  5. 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>