Les packages RPM
Présentation
RPM (RedHat Package Manager) est un gestionnaire de package créé il y a de nombreuses années par RedHat. A l'époque, c'était une petite révolution, car ça permettait d'installer des applications sans avoir à recompiler les sources. En effet, la recompilation des sources ne se passe pas toujours bien, et souvent, il était impossible pour les novices d'installer un programme.
Le gros défaut de RPM, c'est qu'il ne sait pas gérer les dépendances. En effet, la plupart des packages ont besoin que d'autres packages soient installés avant pour pouvoir fonctionner. Par exemple, le package k3b (gravure de cd/dvd avec interface graphique) à besoin du package cdrecord (logiciel de gravure en ligne de commande) ainsi que de nombreuses bibliothèques de KDE, qui elles même dépendent d'autres packages. Dans certains cas, il peut être long et pénible de résoudre à la main toutes les dépendances. Cependant, les packages rpm sont parmis les plus répendus, et il peut être utile de connaître les commandes de base pour les installer. C'est ce que nous allons voir tout de suite
Il faut quand même savoir qu'il existe des gestionnaires de packages beaucoup plus évolués qui permettent de résoudre tout seuls les problèmes de dépendance, en installant automatiquement tout ce qu'il faut. On trouve notemment YUM (le nouveau gestionnaire de package de RedHat et Fedora, qui gère les RPMS nativement), apt-get (le gestionnaire de packages de Debian, Ubuntu et bien d'autres, qui gère les rpm en lui ajoutant un simple module) ou encore URPM de Mandriva (qui les gère nativement lui aussi).
Utilisation des RPMs - Les principales commandes
L'unique commande qui sert à gérer les packages rpm est la commande "rpm". Logique... Cette commande requiert une option principale, éventuellement une ou plusieurs options secondaires, et si nécessaire le nom du package.
L'option principale indique si on veut faire une installation, une suppression, une recherche ou une vérification. Les options secondaires varient en fonction de l'option principale. Je vais tenter de les détailler ci-dessous.
Pour aller vite
Dans tous les exemples qui suivent, je vais prendre l'exemple du paquet "vlc-0.8.6a-1.lvn6.1.i386.rpm" disponible sur le site http://rpm.livna.org/fedora/6/i386/.
Donc pour ceux, pressés, qui n'ont pas le temps de tout lire, ou qui n'ont pas envie, voici les commandes les plus utiles :
Installer ou mettre à jour un package :
rpm -Uvh vlc-0.8.6a-1.lvn6.1.i386.rpm
Installer, même s'il y a des problèmes de dépendance :
rpm -Uvh --nodeps vlc-0.8.6a-1.lvn6.1.i386.rpm
Pour le supprimer :
rpm -e vlc-0.8.6a-1.lvn6.1
Voir la liste de tous les packages installés :
rpm -qa
Pour avoir plus d'options ou pour mieux comprendre les commandes que nous venons de voir, lisez les sections suivantes.
Installation d'un package
La syntaxe générale est de la forme :
rpm -option_principale -option_d_installation nom_du_package
L'option principale et les options secondaires sont généralement accolées.
Options principales :
- -i : installe un nouveau paquet
- -F : met à jour un paquet déjà installé
- -U : installe ou met à jour (remplace les deux commandes précédantes
Options d'installation :
- -v : "verbose" - affiche des informations supplémentaires
- -h : affiche une barre de progression
- --nodeps : ignore la vérification des dépendances
- --allfiles : réinstalle tous les fichiers manquants d'un paquet déjà installé
- --test : simule une installation pour vérifier que tout se passe bien
Exemple :
rpm -Uvh vlc-0.8.6a-1.lvn6.1.i386.rpm
suppression d'un package
La syntaxe générale est de la forme :
rpm -e -options_de_suppression nom_du_package (sans le .rpm)
Options de suppression :
- --nodeps : ne vérifie pas les dépendances
- --test : simule une désinstallation pour vérifier que tout se passe bien
- --allmatches : supprime toutes les versions du paquet
- --noscripts : n'exécute pas les scripts pré et post install et uninstall (regroupe --nopre --nopost --nopreun --nopostun). Cette option est bien sûr déconseillée en temps normal, mais peut sauver la vie dans le cas d'un package buggué qui refuse de se désinstaller.
Exemple :
rpm -e vlc-0.8.6a-1.lvn6.1.i386
recherche de packages
La syntaxe générale est de la forme :
rpm -q -option_de_recherche nom_du_package
Options de recherche :
- -a : "all", fourni des infos sur tous les paquets installés
- -f : "file", indique le paquet d'origine du fichier donné en argument (exemple : rpm -qf /usr/bin/quota)
- -i : "info", affiche des infos sur le paquet installé
- -p : affiche des infos sur le fichier .rpm donné en argument
- -l : "list", liste les fichiers contenus dans le paquet
- -R : affiche la liste de dépendances
- -d : "doc", affiche la liste des fichiers de documentation du paquet
- -s : "state", affiche l'état des fichiers
- -c : "config", affiche la liste des fichiers de configuration
- --script : liste des scripts utilisés lors de l'installation et de la désintallation
Exemple :
rpm -q vlc-0.8.6a-1.lvn6.1.i386
vérification
Vérifie la signature du paquet (vérification de type sha1, md5 et gpg) :
rpm -K (ou --checksig) nom_du_paquet
Vérifie que tous les fichiers installés sont conformes à ce qui a été défini, même les droits :
rpm -V nom_du_paquet (sans .rpm)
Ne renvoie rien si tout est ok.
Les réponses possibles sont :
- . -> ok
- 5 -> problème md5sum
- S -> size - problème de taille
- L -> link - problème avec un lien
- T -> time
- D -> device
- U -> user
- G -> group
- M -> permission et type
- ? -> fichier illisible
Idem avec tous les paquets installés :
rpm -Va
Plus d'infos
Voici un site très complet sur l'utilisation et la création de packages rpm, mais en anglais : http://fedora.redhat.com/docs/drafts/rpm-guide-en/.