Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
YUM


Quelques subtiles options de YUM

par Matthieu

Quelques options de YUM, le gestionnaire de paquets de Fedora et Red Hat.

La clause info

Cette clause permet de récupérer un descriptif du paquet qui lui est passé en paramètre, qu’il soit installé sur le système ou non ; elle affiche également d’autres compléments relatifs à ce paquet tels que sa version, son architecture, sa taille, le dépôt le proposant, ou encore sa licence :

$ yum info arora
[. . .]
Nom : arora
Architecture : x86_64
Version : 0.11.0
Révision : 2.fc15
Taille : 811 k
Dépôt : fedora
Résumé : A cross platform web browser
URL : http://code.google.com/p/arora/
Licence : GPLv2+
Description : Arora is a simple, cross

: platform web browser based on
: the QtWebKit engine. Currently,
: Arora is still under
: development, but it already has
: support for browsing and other
: common features such as web
: history and bookmarks.

La clause repolist

Cette clause liste simplement tous les dépôts activés pour votre système :

$ yum repolist
id du dépôt nom du dépôt statut
fedora Fedora 15 - x86_64 24 085
updates Fedora 15 - x86_64 - Updates 872
repolist: 25 767

On notera qu’en plus des dépôts activés, la commande affiche, dans la colonne « statut », le nombre de paquets composant chacun d’entre eux. Pour afficher tous les dépôts définis dans votre système, y compris ceux désactivés (les dépôts de test par exemple), on rajoutera le mot-clé all à la commande :

$ yum repolist all

La clause provides

Si vous vous êtes déjà demandé quel paquet fournit un programme ou une bibliothèque donnée, la clause provides devrait répondre à vos attentes : celle-ci interroge en effet les dépôts pour déterminer le paquet proposant la ressource qui lui est passée en paramètre. Une fois le paquet identifié, ne reste plus qu’à l’installer. Notez que dans le cas où l’on souhaite trouver un paquet à partir d’un fichier, cette clause attend le chemin complet supposé de ce dernier (ou au moins une expression rationnelle) :

$ yum provides /bin/cp
$ yum provides \*/thunderbird

Notez cependant que pour les bibliothèques dynamiques en revanche (des fichiers *.so.*), le nom même du fichier suffit :

$ yum provides ld-linux.so.2

La clause check

Cette clause va vérifier l’intégrité de votre base de données RPM :

$ yum check

check all

Tel est le message que cette commande doit retourner, après quelques minutes d’exécution, si aucune dépendance brisée ni paquets dupliqués n’ont été détectés. Dans le cas contraire, il est vital de corriger les problèmes signalés pour le bon fonctionnement de votre système. La commande package-cleanup devrait vous y aider d’ailleurs.

La clause deplist

Cette clause renvoie, pour un paquet passé en paramètre, la liste de ses dépendances :

$ yum deplist wget
[. . .]
Recherche de dépendances :
paquet : wget.x86_64 1.12-3.fc15

dépendance : libssl.so.10()(64bit)
provider: openssl.x86_64 1.0.0d-1.fc15
dépendance : librt.so.1()(64bit)
provider: glibc.x86_64 2.13.90-9
dépendance : libc.so.6(GLIBC_2.8)(64bit)
provider: glibc.x86_64 2.13.90-9
dépendance : libdl.so.2()(64bit)
provider: glibc.x86_64 2.13.90-9
dépendance : /sbin/install-info
provider: info.x86_64 4.13a-15.fc15
dépendance : libz.so.1()(64bit)
provider: zlib.x86_64 1.2.5-3.fc15
dépendance : rtld(GNU_HASH)
provider: glibc.x86_64 2.13.90-9
provider: glibc.i686 2.13.90-9
dépendance : libcrypto.so.10()(64bit)
provider: openssl.x86_64 1.0.0d-1.fc15
dépendance : librt.so.1(GLIBC_2.2.5)(64bit)
provider: glibc.x86_64 2.13.90-9
dépendance : /bin/sh
provider: bash.x86_64 4.2.10-2.fc15

Une commande à réserver à tous ceux qui s’intéressent à la façon dont YUM gère les dépendances d’un paquet...

La clause clean

YUM conserve les différentes informations relatives aux dépôts, et en particulier les paquets les composants, dans des fichiers de cache durant un certain temps (dans le dossier /var/cache/yum/ pour information). De cette façon, YUM n’a pas à interroger systématiquement les dépôts en ligne à chaque utilisation, ce qui rallongerait considérablement ses traitements. Contrairement au gestionnaire de paquetages APT, YUM est en mesure de mettre à jour son cache automatiquement, et ce aussi souvent que nécessaire.

Il peut néanmoins s’avérer nécessaire de purger ce cache manuellement, pour forcer YUM à récupérer de nouvelles données dépôts à jour : quoique ce cas demeure exceptionnel, cette opération s’imposera si, par exemple, YUM devait renvoyer des erreurs indiquant des incohérences dans sa base de données :

$ su -lc "yum clean all"

Ainsi, au prochain lancement de YUM, les informations dépôts seront de nouveau générées.

La clause makecache

Cette clause est le pendant de la précédente dans la mesure où elle permet de lancer manuellement une mise à jour des méta-données de YUM relatives aux dépôts :

$ su -lc "yum makecache"

L’option --exclude

Si, pour diverses raisons, vous souhaitiez exclure un paquet particulier d’une mise à jour, l’option --exclude est faite pour vous :

$ su -lc "yum update --exclude=kernel,kernel-devel"

Cette commande va ainsi empêcher les paquets kernel et kerneldevel d’être mis à jour. Cette opération est cependant loin d’être anodine, sachant que les mises à jour visent avant tout à corriger des bogues voire des problèmes de sécurité ; aussi ne l’utilisez que si vous savez ce que vous faites...

L’option --skip-broken

Cette option est utile lorsque certains paquets que l’on souhaite installer ou mettre à jour présentent des dépendances non disponibles dans les dépôts. Un tel cas de figure—rare cependant—se produit par exemple lorsque le noyau est mis à jour, mais que des paquets kmod- <module> installés, construits pour une version spécifique du noyau, n’ont pas encore été mis à disposition dans les dépôts pour celui-ci. Dans pareille situation, YUM refusera de poursuivre la mise à jour ; les dépendances de ces paquets en erreur sont dites « brisées ». L’utilisation de cette option fera en sorte que YUM ne bloque pas une transaction à cause de ces derniers : ils ne seront tout simplement pas traités, contrairement aux autres paquets aux dépendances satisfaites :

$ su -lc "yum update --skip-broken"

Cette option est une alternative peut-être plus pratique à --exclude pour ce type de problèmes.

L’option --setopt

Les options de YUM ne se limitent cependant pas aux deux précédentes susmentionnées : YUM comporte en effet une foultitude de réglages « cachés », documentés dans la page de manuel de yum.conf. Ces réglages sont passés à la commande yum au travers de l’option -- setopt=<option>.

Parmi ces différents réglages, retenons les suivants.

  • Le réglage throttle=<bande passante> permet de modifier à la volée

la bande passante rendue disponible au téléchargement des paquets :

$ su -lc "yum install pidgin --setopt=throttle=3M"

Cette commande permet ainsi d’allouer temporairement à YUM une bande passante de 3 Mio par seconde.

  • YUM propose divers réglages également permettant de modifier la façon dont ses messages seront affichés, en y ajoutant notamment de la couleur :

$ yum list *gstreamer* --setopt=color_list_available_install=green --setopt=color_list_installed_reinstall=blue

Cette commande va ainsi lister les paquets contenant la chaîne « gstreamer » dans leur nom, en affichant ceux déjà installés sur le système en bleu et ceux disponibles en ligne en vert.

  • Un dernier réglage, introduit dans la dernière version de YUM (livrée avec Fedora 15), est particulièrement notable puisqu’il permet, à la désinstallation d’un paquet, de supprimer également toutes ses dépendances non requises par d’autres paquets en même temps :

$ su -lc "yum remove empathy --setopt=clean_requirements_on_remove=1"

Cette commande désinstallera ainsi non seulement Empathy, mais aussi par exemple toutes les bibliothèques requises par ce dernier et non utiles à d’autres programmes. Un tel réglage permet ainsi de maintenir sa base de données de paquets sans le moindre effort, en ne conservant que les paquets réellement utiles au fonctionnement du système et des applications le composant.

Retour vers le passé

Nous nous intéresserons ici plus particulièrement à une clause relativement peu connue de YUM, mais ô combien utile : la clause history. Celle-ci vous permettra non seulement de suivre l’historique de vos opérations YUM, mais aussi d’annuler certaines d’entre elles le plus simplement du monde. Pour mieux cerner son fonctionnement, nous allons présenter dans la suite un exemple d’utilisation.

Supposons que nous souhaitons installer, par exemple afin de compiler un programme à partir de ses sources, le paquet qt-devel :

$ su -lc "yum install qt-devel"

En plus de ce paquet seront également installés une foultitude de paquets de développement. Une fois votre programme compilé, vous n’avez a priori plus besoin de tous ces paquets et souhaitez donc en toute logique les désinstaller. Or vous avez lancé depuis quantité de mises à jour et installé également d’autres paquets. Comment donc retrouver d’une part les paquets installés avec qt-devel et les supprimer sans devoir les retrouver un par un ? C’est là que la clause history nous sera d’un grand secours. On pourra ainsi lister les différentes opérations YUM exécutées sur le système avec la commande suivante :

$ su -lc "yum history list"
[. . .]
Id | Identifiant utilisateur | Date et heure | Action | Modifié
--------------------------------------------------------------------
159 | Casper <Casper> | 2011-05-09 23:49 | Install | 11

Nous identifions alors, à l’aide de l’horodatage, notre installation du paquet qt-devel et de ses dépendances. Nous pouvons alors demander l’annulation—ici la désinstallation—de cette transaction ainsi :

$ su -lc "yum history undo 159"

Le numéro 159 correspond à l’identifiant unique de notre transaction YUM listée dans les sorties de la commande yum history list. En plus de vous aider à maintenir un système propre et léger, cette clause s’avérera extrêment utile pour annuler par exemple une mise à jour présentant des instabilités : on reviendra ainsi sans effort à l’état précédent du système pour mieux analyser le problème.

Un interpréteur de commandes dans YUM

YUM est doté d’un interpréteur de commandes au travers de la clause shell. Ce shell interactif vous permettra de combiner plusieurs opérations YUM en une seule commande, par exemple une mise à jour et l’installation d’un nouveau paquet :

$ su -lc "yum shell"
[. . .]
Configuration du shell Yum
> update
[. . .]
> install gnome-tweak-tool
[. . .]
> run

Ainsi qu’on peut le constater dans cette dernière commande, une fois les différentes opérations YUM saisies, ces dernières seront exécutées avec la commande run. L’interpréteur se dote par ailleurs d’une aide, accessible avec la commande help :

$ su -lc "yum shell"
[. . .]
Configuration du shell Yum
> help

Ce shell s’avère extrêmement puissant puisqu’il autorise également l’exécution de véritables scripts YUM : on peut ainsi aisément imaginer un script que vous pourriez lancer suite à l’installation d’une nouvelle version de Fedora et qui installerait vos programmes favoris et lancerait une mise à jour en une seule passe : considérons par exemple à cette fin le script suivant, supposé écrit dans un fichier post-install.yum :

update

install gparted pavucontrol bash-completion \ dconf-editor run

Pour l’exécuter, il suffit simplement de passer à la commande yum shell le chemin du fichier :

$ su -lc "yum shell post-install.yum"

Notez cependant que vous serez invités, comme pour n’importe quelle transaction YUM par défaut, à confirmer chaque opération à chaque fois qu’il vous le sera demandé. Avec un tel script, que vous pourrez maintenir et ainsi enrichir, vous retrouverez aisément votre environnement logiciel à chaque nouvelle version de Fedora.

A propos de cette doc

Cette documentation a été initialement publiée par Matthieu Saulnier dans l'excellent magazine de la communauté francophone de Fedora : MUFFIN n°3.

Liens

Voir aussi :

Copyright

© 2011 Matthieu Saulnier

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 3.0 :
http://creativecommons.org/licenses/by-sa/3.0/
Affichages

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA