Utilisation de URPMI
Nicolas, le vendredi 18 avril 2003
Devant le succès qu’a eu MandrakeLinux (9.1) lors de la dernière Sgeg Session (v12) et mon manque d’efficacité concernant cet outil génial qu’est URPMI, j’ai décidé de faire un bref résumé des commandes en me basant sur la doc que j’ai épluchée... Ca m’évitera de répondre man urpmi ;)
Qu’est-ce que URPMI
URPMI est une surcouche logicielle de scripts Perl utilisant RPM [1]. Son principal intérêt est qu’il est capable de gérer les problèmes de dépendances auxquels n’importe quel utilisateur d’une distribution basée sur RedHat (notamment MandrakeLinux) est confronté avant d’avoir découvert URPMI.
Pour simplifier, on peut dire que rpm -i est à urmpi ce que dpkg est à apt-get install.
Ajout d’une source
L’ajout d’une source se fait, en mode console, à l’aide de la commande suivante :
# urpmi.addmedia nom_de_la_source le_chemin_vers_la_source with le_chemin_vers_hdlist
Dans le nom_de_la_source, on peut mettre n’importe quoi (avis aux amateurs de noms tordus ;)
Le chemin_vers_la_source indique le dossier où se trouvent les paquets disponibles. Les paquets pourront être :
- Téléchargés sur Internet en utilisant le protocole FTP ou HTTP ;
- Disponibles sur un disque amovible [2] comme un CD, un DVD. Typiquement, il s’agit des CD’s d’installation de la distribution ;
- Disponibles dans l’arborescence des fichiers [3], sur un disque dur local (et très probablement un disque monté avec NFS [4]).
Le chemin_vers_hdlist est le chemin relatif (à l’url d’une source distante) vers le fichier de synthèse hdlist, c’est à dire la liste des paquets (disponibles dans le répertoire défini par chemin_vers_la_source), leurs descriptions, leurs dépendances...
Pour le dernier argument, il est possible de choisir entre la liste complète (hdlist.cz) et synthesis.hdlist.cz (la liste de synthèse). La dernière ne contient que la liste des paquets et de leurs dépendances et est donc moins conséquente (à conseiller pour les petites connexions). La liste complète permet quant à elle d’effectuer des requêtes (voir plus loin...).
Exemple
# urpmi.addmedia paquets_distrib ftp://med.univ-angers.fr/pub/mirror/Mandrake/9.1/i586/Mandrake/RPMS with ../base/hdlist.czAjoutera à la liste des sources de paquets la source paquets_distrib [5].
Pour ajouter la liste des paquets des CD’s d’installation de Mandrake, il n’est pas nécessaire de préciser de chemin vers hdlist, exemple :
# urpmi.addmedia cd1 removable://mnt/cdrom/Mandrake/RPMS
Pour trouver d’autres sources :
Easy Urpmi ;
Liste des miroirs chez MandrakeLinux, il faudra surfer un peu dans les ftp pour retrouver les listes (en général dans ../base/) ;
Le MandrakeClub mais il faut s’inscrire et c’est payant.
La liste des sources est définie dans le fichier /etc/urpmi/urpmi.cfg
Mettre à jour les sources
Les paquets contenus sur les CD’s sont toujours les mêmes mais ceux présents dans les miroirs changent (en fonction des mises à jour), il faut donc mettre à jour ces sources.
La commande : urpmi.update cherchera à mettre à jour toutes les sources définies.
# urpmi.update -aPermet de mettre à jour les sources [6] non amovibles.
# urpmi.update le_nom_de_la_sourceMettra à jour seulement la source ayant pour nom le_nom_de_la_source.
Supprimer une source
La suppression d’une source est très simple :
# urpmi.removemedia le_nom_de_la_sourceet
# urpmi.removemedia -aSupprimera toutes les sources définies (!).
Installer un logiciel
Si l’on connait le nom du logiciel que l’on veut installer, c’est très simple. Il suffit d’utiliser la commande :
# urpmi le_nom_du_logiciel_qui_va_bienURPMI se chargera alors de retrouver le paquet correspondant et demandera conseil s’il faut en plus des paquets dépendants, il demandera confirmation (l’option --auto permet de passer outre cette confirmation) téléchargera et installera le tout.
Et voilà, c’est bien, c’est beau, c’est fun !
Si URPMI trouve la demande ambigüe (par exemple, il trouve plusieurs paquets contenant la chaîne indiquée), il indiquera les paquets qu’il a trouvé et s’arrêtera. Pour installer tours les paquets dont le nom correspond :
# urpmi -a celui_que_je_souhaiteLa commande
# urpmi --auto-selectlaisse à URPMI le soin de choisir tous les paquets déjà installés sur la machine qui ont une version plus récente disponible [7]. La liste des softs (typiquement le kernel et GCC) contenue dans le fichier /etc/urpmi/skip.list ne sera pas mis à jour par ce biais.
Utilisation avancée
Avec les commandes étendues de URPMI, on peut effectuer des requêtes sur les paquets.
Quel paquet contient le fichier que je cherche ?
Très utile pour une librairie. Par exemple, je souhaite installer la librairie /usr/lib/libSDL.so, je saisi :
# urpmf /usr/lib/libSDL.soLa réponse est :
libSDL1.2-devel:/usr/lib/libSDL.soIl ne reste plus qu’a installer le paquet libSDL1.2-devel :)
Quel paquet contient la chaîne "xyz" ?
urpmq listera les paquets dont le nom contient la chaîne indiquée en argument. Par exemple, quels sont les paquets contenant la chaîne latex ?
# urpmq latexLa réponse est :
Les paquetages suivants contiennent latex : tetex-latex-heb tetex-latex preview-latex-xemacs preview-latex-common tetex-latex-arab preview-latex-emacs latex2html(en plus, il est gentil, il parle français :D)
Désinstaller un paquet
# urpme le_paquet
est en fait, l’opposé de # urpmi le_paquet. URPME retirera les paquets dont dépend le paquet que vous souhaitez désintaller.
Divers
Il y a beaucoup d’autres options aux urpm* :
# urpmq --sources mplayer retourne l’url où se trouve le paquet mplayer ;
# urpmq -d mplayer liste les paquets dont dépendent mplayer ;
# urpmq -r mplayer retourne le nom complet du paquet ;
# urpmf --description mplayer retourne la description des paquets contenant la chaîne mplayer ;
# urpmf --summary mplayer retourne le résumé des paquets contenant la chaîne mplayer ;
# urpmf --files mplayer retourne la liste des fichiers contenus dans les paquets contenant la chaîne mplayer ;
# urpmf --size mplayer retourne la taille en octets des paquets contenant mplayer ;
# urpmi --noclean mplayer ne supprimera pas les paquets du cache (/var/cache/urpmi/rpms) après avoir installé les paquets contenant mplayer ;
# urpmi --clean mplayer videra le cache avant de chercher à faire urpmi mplayer
# urpmi ~/mplayer-0.90-0.rc4.4mdk.i586.rpm tentera d’installer le paquet présent localement avec les dépendances s’il les retrouve dans ces sources.
Le dossier /var/lib/urpmi contient les listes des paquets par sources (pas très lisible...)
Sources
HowTo RPM TAR.GZ et Cie ;
Le petit guide d’un linuxien sous Mandrake 9.1
Comparaison des différents paquetages
man urpm* :o).
Je n’ai pas parlé de l’interface graphique, elle existe (accessible par gurpmi le_nom_du_paquet ou urpmi -X le_nom_du_paquet) mais est sans grand intérêt (c’est lourd pour ce que c’est !)...
Il y a aussi, dans le DrakConf, rpmdrake qui est un backend graphique à URPMI et Cie.
Le # (dièse) devant chacune des commandes signifie que vous devez être connecté en tant que Root pour utiliser urpmi et cie
[1] RedHat Package Manager
[2] Il faut indiquer removable://mnt/cdrom/
[3] Il faudra indiquer file://le_chemin/ dans ce cas.
[4] Je n’ai jamais testé mais je ne vois pas pourquoi cela ne fonctionnerait pas...
[5] Il s’agit de tous les paquets qui sont contenus dans les CD’s. Utile pour ceux qui n’ont pas (ou ne veulent pas utiliser) les CD’s d’installation.
[6] Ca pourrait être sympa de lancer une tâche cron non ?
[7] Attention quand même à cette option, urpmi ne préviendra pas s’il installe des paquets avec des version non stables...
