« RPM » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (→‎Rechercher avec urpmf (et urpmq) : orth, correction manque option -y à urpmq)
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
[[Category:Gérer ses logiciels]]
[[Category:Logiciels]]
= RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM) =
= RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM) =


<div class="leatitre">RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM)</div><div class="leapar">par Jean-Christophe 'Jice' Cardot </div><div class="leapar">révision par Jean-Marc Lichtle, puis Jice et Anne, puis Jean-Thomas MUYL (maston28)</div><div class="leadesc">Installer des programmes sous Linux est très simple quand on utilise les bons outils...<br /> </div>
<div class="leapar">par Jean-Christophe 'Jice' Cardot </div><div class="leapar">révision par Jean-Marc Lichtle, puis Jice et Anne, puis Jean-Thomas MUYL (maston28)</div><div class="leadesc">Installer des programmes sous Linux est très simple quand on utilise les bons outils...<br /> </div>
 


Ce document ne vise pas à remplacer la page de man de RPM, mais plutôt de donner une courte référence des commandes les plus utiles pour gérer vos paquetages à ce format.
Ce document ne vise pas à remplacer la page de man de RPM, mais plutôt de donner une courte référence des commandes les plus utiles pour gérer vos paquetages à ce format.
Ligne 56 : Ligne 57 :
<code>rpm -qa</code>
<code>rpm -qa</code>


et  <br />
et  <br />


<code>rpm -qa | less</code>
<code>rpm -qa | less</code>


Pour afficher la liste page par page...  
Pour afficher la liste page par page...


Trouve un paquetage identifié par son nom (toto) :
Trouve un paquetage identifié par son nom (toto) :
Ligne 70 : Ligne 71 :
Pour trier par date d'installation :<br />
Pour trier par date d'installation :<br />


<code>rpm -qa --last</code>
<code>rpm -qa --last</code>


Pour trier par taille :<br /><br /><code>rpm -qa --queryformat '%{name} %{size}\n' | sort -n +1 | column -t</code>
Pour trier par taille :<br /><br /><code>rpm -qa --queryformat '%{name} %{size}\n' | sort -n +1 | column -t</code>


 Jolie ligne de commande n'est-ce pas ? ;-)
Jolie ligne de commande n'est-ce pas ? ;-)


Obtenir la liste des fichiers contenus dans un paquetage toto qui est déjà installé :
Obtenir la liste des fichiers contenus dans un paquetage toto qui est déjà installé :
Ligne 86 : Ligne 87 :
<code>rpm -qi toto</code>
<code>rpm -qi toto</code>


On parie que "<code>i</code>" est mis pour "information" ? <br /> La même chose sur un paquetage pas encore installé : 
On parie que "<code>i</code>" est mis pour "information" ? <br /> La même chose sur un paquetage pas encore installé :  


<code>rpm -qip toto.rpm</code>
<code>rpm -qip toto.rpm</code>
Ligne 95 : Ligne 96 :


* L'option <code>p</code> s'applique aussi à d'autres syntaxes, par exemple <code>rpm -qlp toto.rpm</code> pour avoir la liste des fichiers d'un paquetage non encore installé.
* L'option <code>p</code> s'applique aussi à d'autres syntaxes, par exemple <code>rpm -qlp toto.rpm</code> pour avoir la liste des fichiers d'un paquetage non encore installé.
* Les options de requêtes peuvent se cumuler. Par exemple <code>rpm -ql'''ip''' toto.rpm</code> donnera  à la fois les infos et la liste des fichiers du paquetage toto.rpm.
* Les options de requêtes peuvent se cumuler. Par exemple <code>rpm -ql'''ip''' toto.rpm</code> donnera à la fois les infos et la liste des fichiers du paquetage toto.rpm.


=== Retrouver le paquetage d'origine d'un fichier : ===
=== Retrouver le paquetage d'origine d'un fichier : ===
Ligne 103 : Ligne 104 :
Il peut se produire que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquetage qui a bien pu installer ce fichier. Pas de panique ! Là aussi la commande RPM peut vous être d'une aide précieuse. Ici le '<code>f</code>' signifie fichier (file en anglais).
Il peut se produire que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquetage qui a bien pu installer ce fichier. Pas de panique ! Là aussi la commande RPM peut vous être d'une aide précieuse. Ici le '<code>f</code>' signifie fichier (file en anglais).


Cette commande fonctionne sur les packages installés. Oui, mais si on veut trouver un fichier parmi les paquetages non installés ?<br /> Si vous utilisez Mandrake (voir [#urpm la partie sur urpm plus bas] ), la commande suivante fera l'affaire :<br /><code>urpmf le_fichier</code><br /> Sinon, placez-vous dans le répertoire contenant les .rpm (le CD en général) et faites :<br /><code>for i in *.rpm ; do rpm -qpli $i | grep le_fichier && echo $i ; done</code><br /> ou bien :<br /><code>rpm -q -p -filesbypkg *.rpm | grep le_fichier</code>
Cette commande fonctionne sur les packages installés. Oui, mais si on veut trouver un fichier parmi les paquetages non installés ?<br /> Si vous utilisez Mandrake (voir [#urpm la partie sur urpm plus bas] ), la commande suivante fera l'affaire :<br /><code>urpmf le_fichier</code><br /> Sinon, placez-vous dans le répertoire contenant les .rpm (le CD en général) et faites :<br /><code>for i in *.rpm ; do rpm -qpli $i | grep le_fichier && echo $i ; done</code><br /> ou bien :<br /><code>rpm -q -p -filesbypkg *.rpm | grep le_fichier</code>


=== Tester l'installation d'une paquetage : ===
=== Tester l'installation d'une paquetage : ===
Ligne 136 : Ligne 137 :
<code>rpm -e toto-1.1</code>
<code>rpm -e toto-1.1</code>


Désinstalle le paquetage désigné par son nom '''et''' son numéro de version. 
Désinstalle le paquetage désigné par son nom '''et''' son numéro de version.  


=== Extraire des fichiers d'un RPM : ===
=== Extraire des fichiers d'un RPM : ===
Ligne 164 : Ligne 165 :
=== Quelle est la différence entre SRPM et RPM ? ===
=== Quelle est la différence entre SRPM et RPM ? ===


Les paquetages SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquetage rpm.<br /> Afin de reconstruire un paquetage rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :<br /><code>  # rpmbuild --rebuild paquetage.src.rpm</code><br />Le paquetage rpm résultant se trouvera dans <code>/usr/src/RPM/RPMS/<arch></code> où <code><arch></code> est i386, i586, ppc, etc. suivant votre architecture.
Les paquetages SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquetage rpm.<br /> Afin de reconstruire un paquetage rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :<br /><code> # rpmbuild --rebuild paquetage.src.rpm</code><br />Le paquetage rpm résultant se trouvera dans <code>/usr/src/RPM/RPMS/<arch></code> où <code><arch></code> est i386, i586, ppc, etc. suivant votre architecture.


Pour simplement installer le paquetage, sans reconstruire le fichier .rpm, faire :<br /><code>  # rpmbuild --recompile paquetage.src.rpm</code><br />
Pour simplement installer le paquetage, sans reconstruire le fichier .rpm, faire :<br /><code> # rpmbuild --recompile paquetage.src.rpm</code><br />


Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des votres et qui refuse donc de s'installer, tout en conservant l'intégrité de votre base de données des rpm (tout programme installé devrait être dans la base, mais si vous installez à partir des sources .tar.gz par ./configure && make install, cela ne sera pas le cas.) Par exemple, vous pouvez récupérer un srpm de Mandrake Cooker (la version de développement) et essayer de le reconstruire sur une Mandrake 8.2.
Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des votres et qui refuse donc de s'installer, tout en conservant l'intégrité de votre base de données des rpm (tout programme installé devrait être dans la base, mais si vous installez à partir des sources .tar.gz par ./configure && make install, cela ne sera pas le cas.) Par exemple, vous pouvez récupérer un srpm de Mandrake Cooker (la version de développement) et essayer de le reconstruire sur une Mandrake 8.2.
Ligne 268 : Ligne 269 :
Si vous voulez installer le package qui fournit une librairie (par exemple), utilisez le modifieur -p :<br />
Si vous voulez installer le package qui fournit une librairie (par exemple), utilisez le modifieur -p :<br />


<code>  # urpmi -p libe2p.so.2</code>
<code> # urpmi -p libe2p.so.2</code>


urpmi va alors rechercher quel paquetage fournit <code>libe2p.so.2</code> et l'installer (ici libext2fs2).
urpmi va alors rechercher quel paquetage fournit <code>libe2p.so.2</code> et l'installer (ici libext2fs2).
Ligne 390 : Ligne 391 :
==== Installer / Mettre à jour un ou plusieurs packages ====
==== Installer / Mettre à jour un ou plusieurs packages ====


* Pour installer un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>install</code>.<br />'''Syntaxe''' : <code>apt-get install package1 [package2...]</code><br />'''Exemple''' : <code>apt-get install mplayer</code> installera mplayer et les packages éventuellement nécessaires pour régler les dépendances.<br /> 
* Pour installer un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>install</code>.<br />'''Syntaxe''' : <code>apt-get install package1 [package2...]</code><br />'''Exemple''' : <code>apt-get install mplayer</code> installera mplayer et les packages éventuellement nécessaires pour régler les dépendances.<br />  
* Vous pouvez également choisir d'installer des sources. Pour ce faire, il suffit d'utiliser l'argument <code>source</code>.<br />'''Exemple :''' <code>apt-get source galeon</code> vous permet de récupérer le RPM source de galeon.<br /> 
* Vous pouvez également choisir d'installer des sources. Pour ce faire, il suffit d'utiliser l'argument <code>source</code>.<br />'''Exemple :''' <code>apt-get source galeon</code> vous permet de récupérer le RPM source de galeon.<br />  
* Pour mettre à jour un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>upgrade</code>. Il est plus sûr au préalable d'exécuter la commande <code>apt-get update</code> pour mettre à jour la base de données locale et s'assurer que la mise à jour est réalisée avec la dernière version du dit package disponible.<br />'''Syntaxe''' : apt-get upgrade package1 [package2...]<br />'''Exemple''' : <code>apt-get upgrade mplayer</code> mettra à jour mplayer et les packages éventuellement nécessaires pour régler les dépendances.
* Pour mettre à jour un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>upgrade</code>. Il est plus sûr au préalable d'exécuter la commande <code>apt-get update</code> pour mettre à jour la base de données locale et s'assurer que la mise à jour est réalisée avec la dernière version du dit package disponible.<br />'''Syntaxe''' : apt-get upgrade package1 [package2...]<br />'''Exemple''' : <code>apt-get upgrade mplayer</code> mettra à jour mplayer et les packages éventuellement nécessaires pour régler les dépendances.


Ligne 408 : Ligne 409 :
Enfin la commande <code>apt-cache</code> vous permet d'obtenir un certain nombre d'informations sur les packages installés :
Enfin la commande <code>apt-cache</code> vous permet d'obtenir un certain nombre d'informations sur les packages installés :


* Pour vérifier qu'un package est bien installé, il suffit d'utiliser l'argument <code>search</code>.<br />'''Syntaxe''' : <code>apt-cache search chaine_de_caractères</code> (la chaîne de caractères peut contenir des expressions régulières).<br />'''Exemple :''' vous voulez vérifier que mplayer est bien installé :<br /><div class="code">>apt-cache search mplayer<br /> mplayer - MPlayer, the Movie Player for Linux.<br /> mplayer-skins - A collection of skins for MPlayer.<br /> transcode - A Linux video stream processing utility.</div><br /> 
* Pour vérifier qu'un package est bien installé, il suffit d'utiliser l'argument <code>search</code>.<br />'''Syntaxe''' : <code>apt-cache search chaine_de_caractères</code> (la chaîne de caractères peut contenir des expressions régulières).<br />'''Exemple :''' vous voulez vérifier que mplayer est bien installé :<br /><div class="code">>apt-cache search mplayer<br /> mplayer - MPlayer, the Movie Player for Linux.<br /> mplayer-skins - A collection of skins for MPlayer.<br /> transcode - A Linux video stream processing utility.</div><br />  
* Pour vérifier les dépendances d'un package, on utilisera l'argument <code>depends</code>.<br />'''Syntaxe''' : <code>apt-cache depends chaine_de_caractères</code><br />'''Exemple :''' vous voulez connaitre les dépendances de mplayer :<br /><div class="code">>apt-cache depends mplayer<br /> mplayer<br /> Depends: libdvdread<br /> Depends: libdvdcss<br /> libdvdcss2<br /> Depends: gtk+<br /> Depends: SDL<br /> Depends: divx4linux<br /> Depends: lame<br /> Depends: libvorbis<br /> Depends: lirc<br /> Depends: libdv<br /> Depends: aalib<br /> Depends: arts </div>  
* Pour vérifier les dépendances d'un package, on utilisera l'argument <code>depends</code>.<br />'''Syntaxe''' : <code>apt-cache depends chaine_de_caractères</code><br />'''Exemple :''' vous voulez connaitre les dépendances de mplayer :<br /><div class="code">>apt-cache depends mplayer<br /> mplayer<br /> Depends: libdvdread<br /> Depends: libdvdcss<br /> libdvdcss2<br /> Depends: gtk+<br /> Depends: SDL<br /> Depends: divx4linux<br /> Depends: lame<br /> Depends: libvorbis<br /> Depends: lirc<br /> Depends: libdv<br /> Depends: aalib<br /> Depends: arts </div>  



Version du 19 mars 2010 à 23:12

RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM)

par Jean-Christophe 'Jice' Cardot
révision par Jean-Marc Lichtle, puis Jice et Anne, puis Jean-Thomas MUYL (maston28)
Installer des programmes sous Linux est très simple quand on utilise les bons outils...


Ce document ne vise pas à remplacer la page de man de RPM, mais plutôt de donner une courte référence des commandes les plus utiles pour gérer vos paquetages à ce format.

Introduction

Le format RPM (RedHat Package Manager), a été, comme son nom l'indique, créé à l'origine pour la distribution RedHat. Depuis, de nombreuses distributions l'ont utilisé, on peut citer par exemple Mandriva (ex Mandrake) ou SuSe. D'autres formats de packages dans le monde Linux sont DEB (pour Debian) et TGZ (pour Slackware).

Qu'est-ce qu'un package ? C'est un fichier (une archive, un peu comme un fichier .tar ou .zip) qui contient tous les fichiers appartenant à une application, une bibliothèque, etc. ainsi que des scripts de contrôle qui sont exécutés lors de l'installation ou de la désinstallation de l'application. Ce fichier contient également toutes les dépendances à d'autres applications, bibliothèques, etc.
Note : on parle indifféremment de package, paquetage ou même paquet pour désigner le fichier qui contient l'ensemble des fichiers d'un programme (le fichier rpm lui-même)

Il existe de nombreux utilitaires graphiques tels que Kpackage, GnoRPM, Midnight Commander, etc. qui permettent d'installer et de gérer les packages RPM. L'installation depuis la ligne de commande reste toutefois la solution la plus rapide et la plus efficace pour ce travail.

La plus grande partie des commandes décrites peuvent être exécutée par un utilisateur lambda. Toutefois les commandes qui installent, mettent à jour ou suppriment des paquetages nécessitent des droits d'administrateur (root).

Nous allons voir ici deux méthodes pour gérer les paquets RPM :

Les noms de paquetages sont très longs et donc très pénibles à orthographier correctement. Linux offre toutefois des aides à la frappe :

  • lorsque vous installez un RPM, ou travaillez sur un RPM non encore installé, utilisez la complétion de ligne de commande en tapant les premières lettres du nom du fichier RPM puis la touche TAB. Si la correspondance reste équivoque, Linux vous donnera les possibilités trouvées, retapera votre ligne et vous laissera ajouter quelques lettres pour lever l'indétermination.
  • lorsque vous travaillez sur un RPM qui est déjà installé, la commande rpm s'adresse à la base de données des paquetages installés, qui consigne les noms courts en plus des noms de fichiers complets. L'indication du numéro de version n'est donc en général pas nécessaire (sauf si le même package est installé 2 fois avec 2 versions différentes).

Les commandes rpm usuelles

Pour installer un nouveau paquetage :

rpm -ivh toto.rpm

Attention, si vous installez un paquetage par cette méthode et qu'il existe déjà sur votre système dans une version inférieure, vous risquez d'avoir des problèmes pour le désinstaller (voir plus bas). Par contre, pour installer une bibliothèque simultanément en deux version différentes, utilisez cette syntaxe.
Les options h et v ne sont pas obligatoires, -i est suffisant pour faire une installation. L'option h provoque l'affichage d'une barre de progression (ça fait très pro sur l'écran !) et v rend l'installation bavarde, ce qui fournit des messages plus explicites en cas d'erreur. L'option -vh peut être appliquée sur toutes les commandes rpm ci-après afin de rendre rpm plus bavard.

Pour mettre à jour un paquetage :

rpm -Uvh toto.rpm

Avec un "U" comme "Upgrade" (mise à jour en anglais).

Attention, ceci ne s'applique pas pour upgrader un noyau, voir la [../kernel/kernel.php3#precompile rubrique noyau] à ce sujet.

Enfin, pour remplacer un paquetage par un paquetage plus ancien ("downgrader"), la commande à utiliser est :

rpm -Uvh --oldpackage toto.rpm

Pour supprimer un paquetage :

>rpm -e toto
rpm -e toto-version

Le "e" correspond à "erase" (effacer en anglais).
La syntaxe complète (avec numéro de version) permet de distinguer deux versions d'un même paquetage qui auraient été installées ensemble.

Pour faire des requêtes sur les paquetages :

Afficher la liste de tous les paquetages déjà installés J'imagine que "a" doit signifier "all" ;-) :

rpm -qa

et

rpm -qa | less

Pour afficher la liste page par page...

Trouve un paquetage identifié par son nom (toto) :

rpm -qa | grep toto

La recherche peut s'appliquer à une partie seulement du nom, par exemple rpm -qa | grep 'util' vous donne la liste de tous les RPM installés tels que util-linux, nautilus, bind_utils etc.. Attention la syntaxe est sensible à la distinction majuscules / minuscules !

Pour trier par date d'installation :

rpm -qa --last

Pour trier par taille :

rpm -qa --queryformat '%{name} %{size}\n' | sort -n +1 | column -t

Jolie ligne de commande n'est-ce pas ? ;-)

Obtenir la liste des fichiers contenus dans un paquetage toto qui est déjà installé :

rpm -ql toto

On dira que "l" est l'initiale de "list".

Dans la foulée de la syntaxe précédente, celle-ci donne les informations relatives à ce paquetage, une brève description de ce que fait le paquetage, des dépendances qui doivent être satisfaites, etc. :

rpm -qi toto

On parie que "i" est mis pour "information" ?
La même chose sur un paquetage pas encore installé :

rpm -qip toto.rpm

Avec un "p" comme "package".

Nota :

  • L'option p s'applique aussi à d'autres syntaxes, par exemple rpm -qlp toto.rpm pour avoir la liste des fichiers d'un paquetage non encore installé.
  • Les options de requêtes peuvent se cumuler. Par exemple rpm -qlip toto.rpm donnera à la fois les infos et la liste des fichiers du paquetage toto.rpm.

Retrouver le paquetage d'origine d'un fichier :

rpm -qf /usr/lib/toto.txt

Il peut se produire que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquetage qui a bien pu installer ce fichier. Pas de panique ! Là aussi la commande RPM peut vous être d'une aide précieuse. Ici le 'f' signifie fichier (file en anglais).

Cette commande fonctionne sur les packages installés. Oui, mais si on veut trouver un fichier parmi les paquetages non installés ?
Si vous utilisez Mandrake (voir [#urpm la partie sur urpm plus bas] ), la commande suivante fera l'affaire :
urpmf le_fichier
Sinon, placez-vous dans le répertoire contenant les .rpm (le CD en général) et faites :
for i in *.rpm ; do rpm -qpli $i | grep le_fichier && echo $i ; done
ou bien :
rpm -q -p -filesbypkg *.rpm | grep le_fichier

Tester l'installation d'une paquetage :

rpm -i --test toto

Effectue simplement une vérification sans installer le paquetage toto. Permet essentiellement de vérifier si l'installation pourrait se dérouler sans encombre ou alors si des dépendances non satisfaites risquent de faire avorter l'installation.

Si rpm ne veut pas installer le paquetage toto

Il existe plusieurs options. Premièrement : ne pas vérifier les dépendances.

rpm -i --nodeps toto

Deuxièmement : forcer l'installation, en cas de conflit avec certains autres rpm.

rpm -i --force toto

Enfin, combinez les deux options pour vraiment obliger rpm à procéder à l'installation.

Si rpm ne veut pas désinstaller le paquetage toto

Il suffit alors de faire :

rpm -qa | grep toto

Affiche la liste des paquetages dont le nom contient toto, par exemple :

toto-1.1 toto-1.2

rpm -e toto-1.1

Désinstalle le paquetage désigné par son nom et son numéro de version.

Extraire des fichiers d'un RPM :

Certains outils comme Midnight Commander (mc, ou gmc) permettent d'ouvrir des fichiers rpm, de se déplacer dedans et de copier des fichiers vers d'autres répertoires.
Vous pouvez aussi convertir le rpm en archive cpio (l'ancêtre de tar), par la commande rpm2cpio, et ensuite utiliser la commande cpio pour extraire le ou les fichiers.

Installer un RPM dans un autre système Linux que celui qui tourne :

Vous avez plusieurs systèmes Linux sur votre machine, ou bien vous avez bouté avec le CD ou une disquette de sauvegarde. Vous souhaitez installer un rpm dans un autre système dont la partition racine est monté dans /mnt/racine. La commande à taper est :

rpm -i --root=/mnt/racine /chemin/package.rpm

Vous pouvez utiliser l'option --root=/mnt/racine dans toutes les commandes rpm, pour faire des recherches, etc. avec rpm sur l'autre système Linux.

ET TOUJOURS :

man rpm

L'accès à la page du manuel, le réflexe qu'on devrait toujours avoir...




Quelques précisions concernant rpm

Quelle est la différence entre SRPM et RPM ?

Les paquetages SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquetage rpm.
Afin de reconstruire un paquetage rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :
# rpmbuild --rebuild paquetage.src.rpm
Le paquetage rpm résultant se trouvera dans /usr/src/RPM/RPMS/<arch><arch> est i386, i586, ppc, etc. suivant votre architecture.

Pour simplement installer le paquetage, sans reconstruire le fichier .rpm, faire :
# rpmbuild --recompile paquetage.src.rpm

Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des votres et qui refuse donc de s'installer, tout en conservant l'intégrité de votre base de données des rpm (tout programme installé devrait être dans la base, mais si vous installez à partir des sources .tar.gz par ./configure && make install, cela ne sera pas le cas.) Par exemple, vous pouvez récupérer un srpm de Mandrake Cooker (la version de développement) et essayer de le reconstruire sur une Mandrake 8.2.

Note : ce processus nécessite que les paquetages -devel nécessaires aient été installés, ainsi que les compilateurs utilisés, etc. Voir l'article sur la [../kernel/compil.php3 compilation] .

Que sont les fichiers *.rpmsave et *.rpmnew ?

Lorsque rpm installe un paquetage, il peut soit conserver les anciens fichiers de configuration ; les nouveaux seront alors renommés en *.rpmnew.
Si rpm remplace les anciens fichiers de configuration par des nouveaux, alors ce sont les anciens qui seront renommés en *.rpmsave.

Quelle est la différence entre "installer" et "mettre à jour" ?

La mise à jour (upgrade en anglais) remplace l'ancien paquetage par le nouveau, tandis que l'installation conserve si possible l'ancienne version du programme et installe la nouvelle en parallèle.

Cela peut être fort utile pour les bibliothèques : lorsque vous essayez de mettre à jour une bibliothèque, vous pouvez rompre des dépendances avec les programmes déjà installés (s'il y a un gros saut de version). Afin de ne pas avoir de problèmes, au lieu de mettre à jour la nouvelle version, installez-la ; ainsi l'ancienne version restera présente et les anciens programmes tourneront sans problème. Cela ne pose aucun problème d'avoir plusieurs versions d'une bibliothèque installée sur un système.

Que sont les paquetages -devel ?

Vous avez sans doute remarqué que souvent, pour un package toto.rpm, vous aviez un deuxième package toto-devel.rpm.

toto.rpm contient le logiciel, bibliothèque, etc. lui-même, c'est à dire la version que vous allez utiliser tous les jours.

toto-devel.rpm contient des fichiers (les "entêtes", etc.) qui permettent de compiler des programmes qui utilisent toto. Ainsi, toutes les bibliothèques ont leur paquetage -devel.

Vous avez besoin d'installer les paquetages -devel uniquement si vous désirez compiler des logiciels, que ce soit d'après l'archive tar.gz ou le paquetage src.rpm.



Les commandes urpm* de Mandrake

Le programme rpm de RedHat souffre de nombreuses limitations que Mandrake a dépassées, en créant les outils urpm* (User RPM - à partir de Mandrake 7.0) :

  • résolution automatique et installation/désistallation automatique des paquetages dépendants (rpm indique seulement le nom de paquetages manquants)
  • urpm connaît l'ensemble des paquetages installables depuis différentes sources (les CD, serveurs ftp de mise à jour, Penguin Liberation Front ...)
  • urpm permet d'installer des paquetages depuis internet lorsque ceux-ci sont plus récents que sur les CD (depuis Mandrake 8.0)
  • urpm permet d'installer des paquetages en donnant seulement un nom incomplet (exemple : urpmi koffice pour chercher et installer Koffice, urpmi mplayer, etc.)
  • etc.

Sur chacune des commandes dont on va parler ci-dessous, je vous conseille de lire la page de man (man urpmi, man urpmf, etc.) afin d'en apprendre plus.

Toutes les actions décrites ici peuvent également être réalisées de manière graphique, avec le Gestionnaire de Programmes (Software Manager), qui est une façade ou frontend aux programmes urpm*. Je vous conseille de tester les deux manières de faire, car contrairement aux apparences, la ligne de commande peut être plus simple et/ou rapide.

Configurer urpm

Ajouter / mettre à jour une source de paquetages

Après avoir installé votre distribution, les CD ont été créés dans la base de données de urpm en tant que source de paquetages.
Cependant, vous pouvez ajouter autant de sources que vous le désirez. Supposons par exemple que vous ayez un répertoire "incoming/rpms" dans lequel vous placez tous les rpm que vous récupérez sur internet. Vous pouvez l'ajouter à votre base de données urpm par la commande :

# urpmi.addmedia mes_rpm file://home/jice/incoming/rpms

Où mes_rpm est le nom (arbitraire) que vous donnez à votre source de paquetages.

Par la suite, vous pourrez mettre à jour cette source par :

urpmi.update mes_rpm

De même, pour ajouter une source ftp de paquetages, on donne l'URL du fichier hdlist.cz sur le serveur. Exemple pour le Penguin Liberation Front et une Mandrake 9.0 :

urpmi.addmedia plf ftp://ftp.easynet.fr/plf/9.0 with hdlist.cz

Et de la même façon, pour mettre à jour la source de temps en temps :

urpmi.update plf

L'option -a permet de mettre à jour toutes les sources en même temps

urpmi.update -a

Ajouter des sources distantes

Ajout de Jean-Thomas MUYL


Si vous possédez une connexion à haut débit (ce n'est pas obligatoire, mais conseillé pour utiliser cette option), vous pouvez utiliser des sources main contrib et update situées sur internet.

L'outil en ligne à cette adresse vous permet de configurer vos sources urpmi facilement selon votre distribution et votre localisation géographique. Si vous avez une connexion à haut débit, je vous conseille même de commencer par un urpmi.removemedia -a pour ne plus utiliser les cdroms comme sources, et ne plus vous fatiguer à les chercher dans la pile de cd.

Note : le fichier de configuration de urpm est /etc/urpmi/urpmi.cfg et les bases de données dans /var/lib/urpmi.

Supprimer une source de paquetages

Pour supprimer la source mes_rpm, taper :

urpmi.removemedia mes_rpm

Installer avec urpmi

Installer depuis les sources urpm

Pour installer un logiciel avec urpm, rien de plus simple. Vous tapez simplement la commande urpmi suivie d'une partie du nom du logiciel. Exemple :

urpmi mplayer

urpmi va alors chercher la version la plus récente du package correspondant, regarder s'il doit installer des packages dépendants (et vous en demander confirmation), et installer l'ensemble des packages.

Dans le cas ou l'argument donné à urpmi est ambigü, urpmi renvoie le nom des packages correspondants ; il ne vous reste plus qu'à choisir dans la liste et relancer urpmi avec le bon nom de package.

Si vous voulez installer le package qui fournit une librairie (par exemple), utilisez le modifieur -p :

# urpmi -p libe2p.so.2

urpmi va alors rechercher quel paquetage fournit libe2p.so.2 et l'installer (ici libext2fs2).

Installer directement un ou plusieurs fichiers rpm

Dans ce cas, il suffit de passer le nom du fichier en argument à urpmi :

urpmi mon_paquetage-version.i586.rpm

et le package sera mis à jour de la même manière que rpm -U l'aurait fait.

urpmi peut installer plusieurs paquetages d'un coup : par exemple, pour installer la dernière version de KDE que j'ai téléchargée, je me mets dans le répertoire où j'ai mis les rpm, et je tape :

urpmi *.rpm

Pour installer (et non mettre à jour un package, par exemple pour ajouter un nouveau noyau en parallèle de l'ancien, ou bien une nouvelle librairie qui doit coexister avec l'ancienne), il faut utiliser l'option -i : urpmi -i

urpmi peut également utiliser une url pour installer un paquet. Par exemple, urpmi http://example.com/example.rpm va installer le paquet aprés l'avoir téléchargé. urpmi supporte http, ftp, rsync et ssh pour le moment.

Désinstaller avec urpme

Désinstaller un paquetage

Pour désinstaller un paquetage, il faut utiliser urpme:

urpme mplayer

désinstallera mplayer. S'il y a des paquetages qui en dépendent, urpme demandera s'il doit les désinstaller également. À utiliser avec précaution ;-)

Désinstaller toutes les bibliothèques inutilisées

La commande urpmi_rpm-find-leaves -g liste les bibliothèques que l'on peut desinstaller sans crainte.

Associé à urpme, cela permet de nettoyer le système de toutes ses bibliothèques inutilisées:

urpme `urpmi_rpm-find-leaves -g`

Dans certains cas, il est nécessaire d'effectuer la commande plusieurs fois.

Rechercher avec urpmf (et urpmq)

L'outil de choix pour faire de recherches dans les packages rpm est urpmf. Cela permet de rechercher non seulement dans les paquetages installés comme avec rpm -q, mais aussi des paquetages installables !

urpmf toto

renverra la liste de tous les paquetages qui contiennent le fichier toto.

urpmf dispose de nombreuses options pour faire des requêtes sur les différentes informations de la base de données des paquetages.

Par exemple :

Liste des paquetages du groupe "Games"
urpmf --group Games
Taille du paquetage "pingus"

urpmf --size pingus
pingus:size:1102629


Recherche du mot "pingus" dans les résumés de paquets

urpmf --summary pingus
pingus:summary:Pingus - A free Lemmings clone

Voir man urpmf pour de plus amples informations.

La commande urpmq vous permet d'autres types de requêtes :

Liste des paquetages dont le nom contient la chaîne "toto" :
urpmq -y toto

Sur quelle source se trouve le paquetage toto :
urpmq --archive toto
Quels paquetages dépendent du paquetage toto :
urpmq -d toto
Nom complet du fichier rpm du paquetage toto :
urpmq -r toto

Résumé d'une ligne d'un paquet ( summary + nom + cersion ) :
urpmq --summary toto

Voir aussi man urpmq.

Mettre à jour le système

urpm vous permet de mettre à jour votre système avec les derniers correctifs de sécurité et les corrections de bugs que Mandrake publie régulièrement.
Pour ce faire, il faut avoir paramétré un miroir ftp de mises à jour de sécurité dans urpm (voir configuration), ou avec le Gestionnaire de Programmes (qui est bien pratique pour cette opération).
Si la source de mise à jour s'appelle maj_secu, il faut lancer la commandes suivante pour la mettre à jour :
urpmi.update maj_secu
puis :
urpmi --auto-select
urpm va alors lister les paquetages mis à jour et vous demander si vous souhaitez les installer (pour qu'il installe tout sans demander, pratique pour mettre la commande dans un cron, ajouter l'option --auto).

Si vous souhaitez que urpm ne mette pas à jour automatiquement certains paquetages, il suffit d'ajouter leur nom dans le fichier /etc/urpmi/skip.list .
Par exemple, pour empêcher urpm de mettre à jour automatiquement le kernel et la glibc, ajouter dans ce fichier :

kernel
glibc

Conclusion sur urpm

Les commandes urpm sont encore trop peu connues, et la maintenance de votre Mandrake sera bien plus aisée avec leur utilisation.



apt-get sur Redhat

Redhat dispose également d'outils pour faciliter la gestion des packages et la mise à jour du système. J'ai testé rpm-get que je n'ai pas trouvé satisfaisant. Par-contre le portage de apt-get sur redhat est véritablement une réussite. C'est donc cet utilitaire dont je parlerai concernant Redhat (pour l'article je travaille sur une Redhat 7.3)

Cette version de apt-get pour RPM, même si elle est critiquée parce qu'elle utilise RPM (contre dpkg pour Debian), est extrêmement efficace

Les principaux apports de apt-get:

  • Prise en charge des dépendances pour l'installation et la désinstallation de packages
  • Mise à jour complète de la distribution avec les dernières versions des packages existantes
  • Comme pour urpm, installation des paquetages en donnant seulement un nom incomplet

Installation de apt-get

Les packages à installer :

Vous devez installer au moins le package apt-get . Il contient les binaires que nous allons utiliser par la suite. Pour ceux qui préfèreraient utiliser une interface graphique, il en existe une, extrêmement conviviale, synaptic.

La configuration :

Elle est très simple. Une fois les packages installés il vous suffit de taper apt-get update. Ceci va synchroniser votre base de données locale avec celle du serveur ftp. Cette commande sera à relancer régulièrement pour remettre à jour cette base de données (à insérer dans une crontab par exemple).

  • /etc/apt/sources.list : contient la liste des dépôts pour la récupération des packages. Ces dépôts peuvent être des CD-ROM, un emplacement sur votre disque dur, des URL.
  • /etc/apt/apt.conf : fichier de configuration de apt-get
  • /var/cache/apt/archives : contient les packages qui ont été downloadés pour être installés.

Commande supplémentaire :

La commande apt-cdrom vous permet de rajouter directement au fichier sources.list des dépôts sur CD-ROM.
La syntaxe de la commande : apt-cdrom --cdrom <point-de-montage> add
Exemple : apt-cdrom --cdrom /mnt/cdrom add
Il vous reste alors à insérer successivement tous les CD en votre possession qui contiennent les packages Redhat.

Installer / Désinstaller / Mettre à jour des packages

Installer / Mettre à jour un ou plusieurs packages

  • Pour installer un ou plusieurs packages, on utilisera la commande apt-get avec l'argument install.
    Syntaxe : apt-get install package1 [package2...]
    Exemple : apt-get install mplayer installera mplayer et les packages éventuellement nécessaires pour régler les dépendances.
  • Vous pouvez également choisir d'installer des sources. Pour ce faire, il suffit d'utiliser l'argument source.
    Exemple : apt-get source galeon vous permet de récupérer le RPM source de galeon.
  • Pour mettre à jour un ou plusieurs packages, on utilisera la commande apt-get avec l'argument upgrade. Il est plus sûr au préalable d'exécuter la commande apt-get update pour mettre à jour la base de données locale et s'assurer que la mise à jour est réalisée avec la dernière version du dit package disponible.
    Syntaxe : apt-get upgrade package1 [package2...]
    Exemple : apt-get upgrade mplayer mettra à jour mplayer et les packages éventuellement nécessaires pour régler les dépendances.

Désinstaller avec apt-get

Désinstaller un ou plusieurs packages est aussi simple. Il suffit d'utiliser la commande apt-get suivie de l'argument remove.
Syntaxe : apt-get remove package1 [package2...]
Exemple : apt-get remove mplayer supprimera mplayer et les packages qui étaient dépendants de mplayer mais non utilisés par une autre application.

Mettre à jour le système

Enfin apt-get peut vous permettre également de mettre à jour la totalité de votre distribution. Au préalable, on exécutera là encore un apt-get update pou s'assurer de disposer des derniers packages. Puis il suffit de lancer la commande apt-get dist-upgrade. Et le tour est joué ;)

Vous disposez également de la commande apt-get check. Elle vous permet de vérifier que vous n'avez pas de dépendances non résolues sur votre système.

Rechercher des informations sur un package installé

Enfin la commande apt-cache vous permet d'obtenir un certain nombre d'informations sur les packages installés :

  • Pour vérifier qu'un package est bien installé, il suffit d'utiliser l'argument search.
    Syntaxe : apt-cache search chaine_de_caractères (la chaîne de caractères peut contenir des expressions régulières).
    Exemple : vous voulez vérifier que mplayer est bien installé :
    >apt-cache search mplayer
    mplayer - MPlayer, the Movie Player for Linux.
    mplayer-skins - A collection of skins for MPlayer.
    transcode - A Linux video stream processing utility.

  • Pour vérifier les dépendances d'un package, on utilisera l'argument depends.
    Syntaxe : apt-cache depends chaine_de_caractères
    Exemple : vous voulez connaitre les dépendances de mplayer :
    >apt-cache depends mplayer
    mplayer
    Depends: libdvdread
    Depends: libdvdcss
    libdvdcss2
    Depends: gtk+
    Depends: SDL
    Depends: divx4linux
    Depends: lame
    Depends: libvorbis
    Depends: lirc
    Depends: libdv
    Depends: aalib
    Depends: arts
Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot, Anne-Laure Nicolas le 25/02/2000.

Copyright

Copyright © 25/02/2000, Jean-Christophe Cardot, Anne-Laure Nicolas

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/


Autres ressources