Garder un système Debian propre, astuce n°4 : trouver et réinstaller les paquets altérés

Après avoir vu comment se débarrasser des paquets des éditeurs tiers, nous allons un peu plus loin aujourd’hui en nous intéressant à l’évolution des paquets installés. Plus précisément, ce billet explique comment vérifier que les fichiers composant les paquets sont toujours identiques à ce qu’ils étaient lors de l’installation.

En effet si, en bon bricoleur, vous avez modifié manuellement certains fichiers afin de procéder à quelques tests rapides, ou si vous installez les nouvelles versions de paquets à partir des sources, il est possible que vous ayez remplacé certains fichiers provenant du paquet originel. Ne serait-il pas intéressant de détecter ces modifications (et d’y remédier !) ? debsums est l’outil parfait pour cela.

Utiliser debsums pour identifier les fichiers modifiés

J’utilise fréquemment debsums lorsque je prends en charge la maintenance d’un serveur Debian, afin de dresser la liste des fichiers modifiés par le précédent administrateur.

Lancé sans argument, debsums est très verbeux : il listera chaque fichier installé (à l’exception des fichiers de configuration) en affichant son état en regard : « OK » s’il n’a pas été modifié, et « FAILED » dans le cas contraire.

$ sudo debsums
/usr/bin/a2ps                                               OK
[...]

L’option --all permet d’inclure les fichiers de configuration également. L’option --config permet, au contraire, de ne prendre en compte que les fichiers de configuration.

L’option --changed, enfin, permet de demander à debsums une liste restreinte aux seuls fichiers modifiés. La commande suivante va donc permettre de ne lister que les fichiers ayant été modifiés sur le système, et qui ne sont pas des fichiers de configuration :

$ sudo debsums --changed
/usr/lib/perl5/AptPkg/Config.pm
/usr/lib/perl5/AptPkg.pm
[...]

Remonter aux paquets concernés, et les réinstaller

Parmi les fichiers modifiés, debsums a trouvé /usr/lib/perl5/AptPkg.pm. C’est exact, je me souviens avoir manuellement installé une version modifiée de ce module Perl.

J’en ai déduit le paquet concerné grâce à la commande dpkg --search /usr/lib/perl5/AptPkg.pm : il s’agit de libapt-pkg-perl.

Tout ce qu’il me reste à faire alors est de réinstaller le paquet pour ré-écraser les fichiers modifiés avec les originaux :

$ sudo aptitude reinstall libapt-pkg-perl
[...]
# Ou avec apt-get
$ sudo apt-get --reinstall install libapt-pkg-perl
[...]

Il ne reste plus qu’à recommencer le processus jusqu’à ce que debsums ne remonte plus aucun fichier modifié.

Ceci est une traduction de mon article Debian Cleanup Tip #4: find broken packages and reinstall them contribuée par Weierstrass01. Vous voulez d’autres tutoriels comme celui-ci ? Cliquez ici pour vous abonner à ma newsletter et recevoir les nouveaux articles par email.

Commentaires

  1. Bonjour,

    que faire devant ce genre de retour?
    ———————————
    debsums: no md5sums for binutils
    debsums: no md5sums for bogofilter
    debsums: no md5sums for doc-debian
    debsums: no md5sums for dolphin-emu
    debsums: no md5sums for emacsen-common
    debsums: no md5sums for g++
    debsums: no md5sums for gcj-4.4-jre
    debsums: no md5sums for gcj-4.6-jre
    —————————————————–

    Si ma mémoire est bonne se sont des paquets installés à la main avec dpkg (à partir de .deb) ou compilés et installés avec checkinstall.

    J’ai aussi des « missing file » comme ceux-ci :
    ————————-
    debsums: missing file /usr/lib/i386-linux-gnu/libGL.so.1.2 (from libgl1-mesa-glx package)
    debsums: missing file /usr/lib/libvdpau.so.1.0.0 (from libvdpau1 package)
    ————————–

    Merci
    PS : merci pour cette série d’articles très intéressants.

  2. Pour les premiers messages, c’est le paquet qui ne fournit pas les informations nécessaires. On peut configurer debsums pour qu’il génère les informations nécessaires lors de l’installation (dpkg-reconfigure debsums) et on peut les réinstaller (et non ce n’a rien à voir avec des paquets installés manuellement ou pas, ou installés avec checkinstall ou pas).

    Pour les missing files cela constitue un problème réel à régler en réinstallant les paquets incriminés.

  3. Martin BDC a écrit:

    Je connais depuis longtemps debsums et je m’en sers de temps à autre (il m’a permit à plusieurs reprise de détecter les paquets corrompus à ré-installer (pb de fs)).

    Je vais faire une petite parenthèse qui n’a pas grand chose à voir avec ton article.
    Je n’avais jamais pensé à ce dernier comme

    Alors qu’il s’agit pourtant exactement de sa fonction.

    Je me disais donc qu’il pouvait être intéressant dans des softs type backuppc
    pour éviter de sauvegarder inutilement un fichier non modifié par rapport à l’installation de base de debian
    qu’on pouvait sûrement rajouter facilement un script du type :

    si de ce fichier correspond à celui du système de base
    alors ne pas sauvegarder le fichier

    Bon c’était juste une pensée stupide en passant…
    Qui nécessite de plus un peu plus de finesse que ça (car il faut que ça fonctionne quand il y a une mise à jour sur ledit fichier… Mais sur le principe, je trouvais l’idée intéressante. Je me suis dis que j’allais donc la partager).

    Voilà, désolé pour le bruit, et merci pour tes articles !

Trackbacks

  1. […] pas de paquets 07/10/2011 Par Raphaël Hertzog Laisser un commentaire: Après avoir abordé l’altération des paquets installés et comment y remédier, nous allons nous concentrer aujourd’hui sur les fichiers ne provenant pas d’un […]