Docs

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.cz

Ajoutera à 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 -a

Permet de mettre à jour les sources [6] non amovibles.

# urpmi.update le_nom_de_la_source

Mettra à 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_source

et

# urpmi.removemedia -a

Supprimera 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_bien

URPMI 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_souhaite

La commande

# urpmi --auto-select

laisse à 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.so

La réponse est :

libSDL1.2-devel:/usr/lib/libSDL.so

Il 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 latex

La 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).

P.-S. :

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

Notes :

[1RedHat Package Manager

[2Il faut indiquer removable://mnt/cdrom/

[3Il faudra indiquer file://le_chemin/ dans ce cas.

[4Je n’ai jamais testé mais je ne vois pas pourquoi cela ne fonctionnerait pas...

[5Il 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.

[6Ca pourrait être sympa de lancer une tâche cron non ?

[7Attention quand même à cette option, urpmi ne préviendra pas s’il installe des paquets avec des version non stables...