« 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)
(29 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:Gérer ses logiciels]]
= RPM =
= RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM) =
[[Catégorie:Logiciels]]
[[Catégorie:Fedora]]
[[Catégorie:RHEL]]
[[Catégorie:Mageia]]
[[Catégorie:Mandriva]]
[[Catégorie:SUSE]]
[[Catégorie:Commandes Unix]]


<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>
Installer des programmes sous GNU/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.
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 paquets à ce format.
 
Voir aussi [[YUM|Quelques subtiles options de YUM]] et les fiches pratiques concernant l'installation de logiciels sous [[Fiches:Administration-ficheinstall-Fedora|Fedora]], [[Fiches:Administration-ficheinstall-Mandriva|Mandriva]] et [[Fiches:Administration-ficheinstall-Mageia|Mageia]].


== Introduction ==
== 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).<br /><br />'''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.<br /><u>Note</u> : 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)<br />
Le format RPM (RedHat Package Manager), a été, comme son nom l'indique, créé à l'origine pour la distribution Red Hat. Depuis, de nombreuses distributions l'ont utilisé, on peut citer par exemple Mandriva (ex-Mandrake) ou SuSE.  


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.
D'autres formats de paquets dans le monde Linux sont DEB (pour Debian) et TGZ (pour Slackware). '''Qu'est-ce qu'un paquet ?''' 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.<br /><u>Note</u> : on parle indifféremment de paquet, package ou même paquetage pour désigner le fichier qui contient l'ensemble des fichiers d'un programme (le fichier rpm lui-même).<br />


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).
Il existe de nombreux utilitaires graphiques tels que Kpackage, GnoRPM, Midnight Commander, etc. qui permettent d'installer et de gérer les paquets 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 paquets nécessitent des droits d'administrateur (root).


Nous allons voir ici deux méthodes pour gérer les paquets RPM :<br />
Nous allons voir ici deux méthodes pour gérer les paquets RPM :<br />


* [[Gérer les paquetages RPM#Les_commandes_rpm_usuelles|le programme rpm]],
* [[Gérer les paquetages RPM#Les_commandes_rpm_usuelles|la commande rpm]],
* [[Gérer les paquetages RPM#Les_commandes_urpm.2A_de_Mandrake|les programmes urpm* de Mandrake]].
* [[Gérer les paquetages RPM#Les_commandes_urpm.2A_de_Mandrake|les commandes urpm* de Mandriva]].


Les noms de paquetages sont très longs et donc très pénibles à orthographier correctement. Linux offre toutefois des aides à la frappe :
Les noms des paquets 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 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 <code>rpm</code> 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).
* lorsque vous travaillez sur un RPM qui est déjà installé, la commande <b>rpm</b> s'adresse à la base de données des paquets 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 ==


== Les commandes rpm usuelles ==
=== Pour installer un nouveau paquet : ===


=== Pour installer un nouveau paquetage : ===
<div class="code">rpm -ivh toto.rpm</div>


<code>rpm -ivh toto.rpm</code>
Attention, si vous installez un paquet 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.


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.<br /> Les options <code>h</code> et <code>v</code> ne sont pas obligatoires, <code> -i</code> est suffisant pour faire une installation. L'option <code> h</code> provoque l'affichage d'une barre de progression (ça fait très pro sur l'écran !) et <code>v</code> rend l'installation bavarde, ce qui fournit des messages plus explicites en cas d'erreur. L'option <code> -vh</code> peut être appliquée sur toutes les commandes rpm ci-après afin de rendre rpm plus bavard.
Les options <b>h</b> et <b>v</b> ne sont pas obligatoires, <b> -i</b> est suffisant pour faire une installation. L'option <b> h</b> provoque l'affichage d'une barre de progression (ça fait très pro sur l'écran !) et <b>v</b> rend l'installation bavarde, ce qui fournit des messages plus explicites en cas d'erreur. L'option <b> -vh</b> peut être appliquée sur toutes les commandes rpm ci-après afin de rendre rpm plus bavard.


=== Pour mettre à jour un paquetage : ===
=== Pour mettre à jour un paquet : ===


<code>rpm -Uvh toto.rpm</code>
<div class="code">rpm -Uvh toto.rpm</div>


Avec un "U" comme "Upgrade" (mise à jour en anglais).
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.
Attention, ceci ne s'applique pas pour upgrader un noyau, voir la [[Kernel-index|rubrique noyau]] à ce sujet.
 
Enfin, pour remplacer un paquet par un paquet plus ancien ("downgrader"), la commande à utiliser est :


Enfin, pour remplacer un paquetage par un paquetage plus ancien ("downgrader"), la commande à utiliser est :
<div class="code">rpm -Uvh --oldpaquet toto.rpm</div>


<code>rpm -Uvh --oldpackage toto.rpm</code>
=== Pour supprimer un paquet : ===


=== Pour supprimer un paquetage : ===
<div class="code">rpm -e toto<br /> rpm -e toto-version</div>


<div class="code">>rpm -e toto<br /> rpm -e toto-version</div>
Le "<b>e</b>" correspond à "erase" (effacer en anglais). <br /> La syntaxe complète (avec numéro de version) permet de distinguer deux versions d'un même paquet qui auraient été installées ensemble.


Le "<code>e</code>" correspond à "erase" (effacer en anglais). <br /> 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 paquets : ===


=== Pour faire des requêtes sur les paquetages : ===
Afficher la liste de tous les paquets déjà installés J'imagine que "<b>a</b>" doit signifier "all" ;-) :<br />


Afficher la liste de tous les paquetages déjà installés J'imagine que "<code>a</code>" doit signifier "all" ;-) :<br />
<div class="code">rpm -qa</div>


<code>rpm -qa</code>
et


et  <br />
<div class="code">rpm -qa | less</div>


<code>rpm -qa | less</code>
Pour afficher la liste page par page... 


Pour afficher la liste page par page...  
Trouve un paquet identifié par son nom (toto) :


Trouve un paquetage identifié par son nom (toto) :
<div class="code">rpm -qa | grep toto</div>


<code>rpm -qa | grep toto</code>
La recherche peut s'appliquer à une partie seulement du nom, par exemple <b>rpm -qa | grep 'util'</b> 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 !


La recherche peut s'appliquer à une partie seulement du nom, par exemple <code>rpm -qa | grep 'util'</code> 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 :


Pour trier par date d'installation :<br />
<div class="code">rpm -qa --last</div>


<code>rpm -qa --last</code>
Pour trier par taille :


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


 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 paquet toto qui est déjà installé :


<code>rpm -ql toto</code>
<div class="code">rpm -ql toto</div>


On dira que "<code>l</code>" est l'initiale de "list".
On dira que "<b>l</b>" 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. :
Dans la foulée de la syntaxe précédente, celle-ci donne les informations relatives à ce paquet, une brève description de ce que fait le paquet, des dépendances qui doivent être satisfaites, etc. :


<code>rpm -qi toto</code>
<div class="code">rpm -qi toto</div>


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


<code>rpm -qip toto.rpm</code>
<div class="code">rpm -qip toto.rpm</div>


Avec un "<code>p</code>" comme "package".
Avec un "<b>p</b>" comme "paquet".


Nota :<br />
Nota :


* 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 <b>p</b> s'applique aussi à d'autres syntaxes, par exemple <b>rpm -qlp toto.rpm</b> pour avoir la liste des fichiers d'un paquet 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 <b>rpm -ql'''ip''' toto.rpm</b> donnera à la fois les infos et la liste des fichiers du paquet toto.rpm.


=== Retrouver le paquetage d'origine d'un fichier : ===
=== Retrouver le paquet d'origine d'un fichier : ===


<code>rpm -qf /usr/lib/toto.txt</code>
<div class="code">rpm -qf /usr/lib/toto.txt</div>


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 arriver que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquet 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 '<b>f</b>' 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 paquets installés. Oui, mais si on veut trouver un fichier parmi les paquets non installés ?<br /> Si vous utilisez Mandriva (voir la partie sur urpm plus bas), la commande suivante fera l'affaire :<br /><b>urpmf le_fichier</b><br /> Sinon, placez-vous dans le répertoire contenant les .rpm (le CD en général) et faites :<br /><b>for i in *.rpm ; do rpm -qpli $i | grep le_fichier && echo $i ; done</b><br /> ou bien : <br /><b>rpm -q -p -filesbypkg *.rpm | grep le_fichier</b>.


=== Tester l'installation d'une paquetage : ===
=== Tester l'installation d'une paquet : ===


<code>rpm -i --test toto</code>
<div class="code">rpm -i --test toto</div>


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.
Effectue simplement une vérification sans installer le paquet 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 <code>rpm</code> ne veut pas installer le paquetage toto ===
=== Si <b>rpm</b> ne veut pas installer le paquet toto ===


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


<code>rpm -i --nodeps toto</code>
<div class="code">rpm -i --nodeps toto</div>


Deuxièmement : forcer l'installation, en cas de conflit avec certains autres <code>rpm</code>.
Deuxièmement : forcer l'installation, en cas de conflit avec certains autres <b>rpm</b>.


<code>rpm -i --force toto</code>
<div class="code">rpm -i --force toto</div>


Enfin, combinez les deux options pour vraiment obliger <code>rpm</code> à procéder à l'installation.
Enfin, combinez les deux options pour vraiment obliger <b>rpm</b> à procéder à l'installation.


=== Si <code>rpm</code> ne veut pas désinstaller le paquetage toto ===
=== Si <b>rpm</b> ne veut pas désinstaller le paquet toto ===


Il suffit alors de faire :
Il suffit alors de faire :


<code>rpm -qa | grep toto</code>
<b>rpm -qa | grep toto</b>


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


<code multi>toto-1.1
<div class="code">
toto-1.2</code>
toto-1.1<br />
toto-1.2
</div>


<code>rpm -e toto-1.1</code>
<div class="code">rpm -e toto-1.1</div>


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


=== Extraire des fichiers d'un RPM : ===
=== 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.<br /> Vous pouvez aussi convertir le rpm en archive cpio (l'ancêtre de tar), par la commande <code>rpm2cpio</code>, et ensuite utiliser la commande <code>cpio</code> pour extraire le ou les fichiers.
Certains outils comme Midnight Commander (commande <b>mc</b>, ou <b>gmc</b>) 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 <b>rpm2cpio</b>, et ensuite utiliser la commande <b>cpio</b> pour extraire le ou les fichiers.


=== Installer un RPM dans un autre système Linux que celui qui tourne : ===
=== Installer un RPM dans un autre système Linux que celui qui tourne : ===
Ligne 146 : Ligne 164 :
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 :
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 :


<code>rpm -i --root=/mnt/racine /chemin/package.rpm</code>
<div class="code">rpm -i --root=/mnt/racine /chemin/paquet.rpm</div>


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


=== ET TOUJOURS : ===
=== ET TOUJOURS : ===


<code>man rpm</code>
<div class="code">man rpm</div>


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


<br />
<br />
<br />


Ligne 164 : Ligne 181 :
=== 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 paquets SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquet rpm. Afin de reconstruire un paquet rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :


Pour simplement installer le paquetage, sans reconstruire le fichier .rpm, faire :<br /><code>  # rpmbuild --recompile paquetage.src.rpm</code><br />
<div class="code"> # rpmbuild --rebuild paquet.src.rpm</div>


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.
Le paquet rpm résultant se trouvera dans <b>/usr/src/RPM/RPMS/<arch></b> où <b><arch></b> est i386, i586, ppc, etc. suivant votre architecture.


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] .<br />
Pour simplement installer le paquet, sans reconstruire le fichier .rpm, faire :
 
<div class="code"> # rpmbuild --recompile paquet.src.rpm</div>
 
Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des vôtres 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 - cet exemple date un peu -, 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 paquets -devel nécessaires aient été installés, ainsi que les compilateurs utilisés, etc. Voir l'article sur [[Software-soft_gere-compil|la compilation] .<br />


=== Que sont les fichiers *.rpmsave et *.rpmnew ? ===
=== 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.<br /> Si rpm remplace les anciens fichiers de configuration par des nouveaux, alors ce sont les anciens qui seront renommés en *.rpmsave.<br />
Lorsque rpm installe un paquet, il peut soit conserver les anciens fichiers de configuration ; les nouveaux seront alors renommés en *.rpmnew.<br /> 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" ? ===
=== 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.
La mise à jour (''upgrade'' en anglais) remplace l'ancien paquet 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.<br />
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.<br />


=== Que sont les paquetages -devel ? ===
=== Que sont les paquets -devel ? ===


Vous avez sans doute remarqué que souvent, pour un package toto.rpm, vous aviez un deuxième package toto-devel.rpm.
Vous avez sans doute remarqué que souvent, pour un paquet toto.rpm, vous aviez un deuxième paquet 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.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.
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 paquet -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.<br /><br />
Vous avez besoin d'installer les paquets -devel uniquement si vous désirez compiler des logiciels, que ce soit d'après l'archive tar.gz ou le paquet src.rpm.<br /><br />


----
<br />
<br />


<br />
== Les commandes URPM* de Mandriva ==


== Les commandes urpm* de Mandrake ==
La commande initiale rpm de Red Hat - souffrait de nombreuses limitations que Mandrake puis Mandriva a dépassées, en créant les outils urpm* (User RPM) à partir de Mandrake 7.0 (2000).


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) :
urpm est utilisée aujourd'hui par Mandriva et ses dérivées, comme Mageia. Red Hat utilise quant à lui désormais le gestionnaire de paquets [[Fiches:Administration-ficheinstall-Fedora|YUM]] (depuis Fedora Core 1, en 2003) issu de la distribution Yellow Dog.


* résolution automatique et installation/désistallation automatique des paquetages dépendants (rpm indique seulement le nom de paquetages manquants)
Les avantages d'urpm sur la commande rpm :
* urpm connaît l'ensemble des paquetages installables depuis différentes sources (les CD, serveurs ftp de mise à jour, [http://plf.zarb.org  Penguin Liberation Front] ...)
* résolution automatique et installation/désistallation automatique des paquets dépendants (rpm indique seulement le nom de paquets manquants) ;
* urpm permet d'installer des paquetages depuis internet lorsque ceux-ci sont plus récents que sur les CD (depuis Mandrake 8.0)
* urpm connaît l'ensemble des paquets installables depuis différentes sources (les CD, serveurs ftp de mise à jour, [http://plf.zarb.org  Penguin Liberation Front] ...) ;
* urpm permet d'installer des paquetages en donnant seulement un nom incomplet (exemple : <code>urpmi koffice</code> pour chercher et installer Koffice, <code>urpmi mplayer</code>, etc.)
* urpm permet d'installer des paquets depuis internet lorsque ceux-ci sont plus récents que sur les CD (depuis Mandrake 8.0) ;
* urpm permet d'installer des paquets en donnant seulement un nom incomplet (exemple : <b>urpmi amarok</b> pour chercher et installer Amarok, <b>urpmi mplayer</b>, etc.) ;
* etc.
* etc.


Sur chacune des commandes dont on va parler ci-dessous, je vous conseille de lire la page de man (<code>man urpmi</code>, <code>man urpmf</code>, etc.) afin d'en apprendre plus.
Sur chacune des commandes dont on va parler ci-dessous, je vous conseille de lire la page de man (<b>man urpmi</b>, <b>man urpmf</b>, 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.
Toutes les actions décrites ici peuvent également être réalisées de manière graphique, avec le gestionnaire graphique de programmes Rpmdrake (lançable via les menus ou par la commande <b>rpmdrake</b>) qui est une interface graphique 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 ===
=== Configurer urpm ===


==== Ajouter / mettre à jour une source de paquetages ====
==== Ajouter / mettre à jour une source de paquets ====


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.<br /> 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 :
Après avoir installé votre distribution, le média d'installation (CD par exmeple) ont été créés dans la base de données de urpm en tant que source de paquets.


<code>  # urpmi.addmedia mes_rpm file://home/jice/incoming/rpms</code>
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 :


Où mes_rpm est le nom (arbitraire) que vous donnez à votre source de paquetages.
<div class="code"> # urpmi.addmedia mes_rpm file://home/jice/incoming/rpms</div>
 
Où mes_rpm est le nom (arbitraire) que vous donnez à votre source de paquets.


Par la suite, vous pourrez mettre à jour cette source par :<br />
Par la suite, vous pourrez mettre à jour cette source par :<br />


<code>urpmi.update mes_rpm</code>
<div class="code">urpmi.update mes_rpm</div>


De même, pour ajouter une source ftp de paquetages, on donne l'URL du fichier hdlist.cz sur le serveur. Exemple pour le [http://plf.zarb.org  Penguin Liberation Front] et une Mandrake 9.0 :<br />
De même, pour ajouter une source ftp de paquets, on donne l'URL du fichier hdlist.cz sur le serveur. Exemple pour le [http://plf.zarb.org  Penguin Liberation Front] et une Mandrake 9.0 :<br />


<code>urpmi.addmedia plf ftp://ftp.easynet.fr/plf/9.0 with hdlist.cz</code>
<div class="code">urpmi.addmedia plf ftp://ftp.easynet.fr/plf/9.0 with hdlist.cz</div>


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


<code>urpmi.update plf</code>
<div class="code">urpmi.update plf</div>


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


<code>urpmi.update -a</code>
<div class="code">urpmi.update -a</div>


==== Ajouter des sources distantes ====
==== Ajouter des sources distantes ====


<u>Ajout de Jean-Thomas MUYL</u>
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 <b>main</b> <b>contrib</b> et <b>update</b> situées sur internet.
 
<br />
 
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 <code>main</code> <code>contrib</code> et <code>update</code> situées sur internet.


L'outil en ligne à [http://easyurpmi.zarb.org 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 <code>urpmi.removemedia -a</code> pour ne plus utiliser les cdroms comme sources, et ne plus vous fatiguer à les chercher dans la pile de cd.
L'outil en ligne à [http://easyurpmi.zarb.org 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 <b>urpmi.removemedia -a</b> pour ne plus utiliser les cdroms comme sources, et ne plus vous fatiguer à les chercher dans la pile de cd.


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


==== Supprimer une source de paquetages ====
==== Supprimer une source de paquets ====


Pour supprimer la source mes_rpm, taper :<br />
Pour supprimer la source mes_rpm, taper :<br />


<code>urpmi.removemedia mes_rpm</code><br /><br />
<div class="code">urpmi.removemedia mes_rpm</div>


=== Installer avec urpmi ===
=== Installer avec urpmi ===
Ligne 260 : Ligne 283 :
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 :<br />
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 :<br />


<code>urpmi mplayer</code>
<div class="code">urpmi mplayer</div>


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.
urpmi va alors chercher la version la plus récente du paquet correspondant, regarder s'il doit installer des paquets dépendants (et vous en demander confirmation), et installer l'ensemble des paquets.


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.
Dans le cas ou l'argument donné à urpmi est ambigu, urpmi renvoie le nom des paquets correspondants ; il ne vous reste plus qu'à choisir dans la liste et relancer urpmi avec le bon nom de paquets.


Si vous voulez installer le package qui fournit une librairie (par exemple), utilisez le modifieur -p :<br />
Si vous voulez installer le paquet qui fournit une librairie (par exemple), utilisez le modifieur <b>-p</b> :


<code>  # urpmi -p libe2p.so.2</code>
<div class="code"> # urpmi -p libe2p.so.2</div>


urpmi va alors rechercher quel paquetage fournit <code>libe2p.so.2</code> et l'installer (ici libext2fs2).
urpmi va alors rechercher quel paquet fournit <b>libe2p.so.2</b> et l'installer (ici libext2fs2).


==== Installer directement un ou plusieurs fichiers rpm ====
==== Installer directement un ou plusieurs fichiers rpm ====
Ligne 276 : Ligne 299 :
Dans ce cas, il suffit de passer le nom du fichier en argument à urpmi :
Dans ce cas, il suffit de passer le nom du fichier en argument à urpmi :


<code>urpmi mon_paquetage-version.i586.rpm</code>
<div class="code">urpmi mon_paquet-version.i586.rpm</div>


et le package sera mis à jour de la même manière que rpm -U l'aurait fait.
et le paquet 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 peut installer plusieurs paquets 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 :


<code>urpmi *.rpm</code><br />
<div class="code">urpmi *.rpm</div>


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
Pour installer (et non mettre à jour un paquet, 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 <b>-i</b> :


urpmi peut également utiliser une url pour installer un paquet. Par exemple, <code>urpmi http://example.com/example.rpm</code> va installer le paquet aprés l'avoir téléchargé. urpmi supporte http, ftp, rsync et ssh pour le moment.
<div class="code">urpmi -i</div>.
 
urpmi peut également utiliser une url pour installer un paquet. Par exemple, <b>urpmi http://example.com/example.rpm</b> 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 avec urpme ===


====Désinstaller un paquetage====
====Désinstaller un paquet====


Pour désinstaller un paquetage, il faut utiliser '''urpme'''<nowiki>:</nowiki>
Pour désinstaller un paquet, il faut utiliser '''urpme''' <nowiki>:</nowiki>


<code>urpme mplayer</code>
<div class="code">urpme mplayer</div>


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 ;-)<br />
désinstallera mplayer. S'il y a des paquets qui en dépendent, urpme demandera s'il doit les désinstaller également. À utiliser avec précaution ;-)<br />


====Désinstaller toutes les bibliothèques inutilisées====
====Désinstaller toutes les bibliothèques inutilisées====


La commande <code>urpmi_rpm-find-leaves -g</code> liste les bibliothèques que l'on peut desinstaller sans crainte.
La commande <b>urpmi_rpm-find-leaves -g</b> 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:
Associé à '''urpme''', cela permet de nettoyer le système de toutes ses bibliothèques inutilisées:


<code>urpme `urpmi_rpm-find-leaves -g`</code>
<div class="code">urpme `urpmi_rpm-find-leaves -g`</div>


Dans certains cas, il est nécessaire d'effectuer la commande plusieurs fois.
Dans certains cas, il est nécessaire d'effectuer la commande plusieurs fois.
Ligne 310 : Ligne 335 :
=== Rechercher avec urpmf (et urpmq) ===
=== 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 !
L'outil de choix pour faire de recherches dans les paquets rpm est ''' urpmf'''. Cela permet de rechercher non seulement dans les paquets installés comme avec rpm -q, mais aussi des paquets installables !
 
<div class="code">urpmf toto</div>
 
renverra la liste de tous les paquets 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 paquets.
 
Quelques exemples :
 
Liste des paquets du groupe "Games" :
 
<div class="code">urpmf --group Games</div>
 
Taille du paquet "pingus" :


<code>urpmf toto</code>
<div class="code">
urpmf --size pingus<br />
<br/>
pingus:size:1102629
</div>


renverra la liste de tous les paquetages qui contiennent le fichier toto.
Recherche du mot "pingus" dans les résumés de paquets :


urpmf dispose de nombreuses options pour faire des requêtes sur les différentes informations de la base de données des paquetages.
<div class="code">
urpmf --summary pingus<br />
pingus:summary:Pingus - A free Lemmings clone
</div>


Par exemple :
Voir <b>man urpmf</b> pour de plus amples informations.


Liste des paquetages du groupe "Games"<br /><code>urpmf --group Games</code><br /> Taille du paquetage "pingus"<br />
La commande '''urpmq''' vous permet d'autres types de requêtes :


<div class="code">urpmf --size pingus<br /><code>pingus:size:1102629</code></div>
Liste des paquets dont le nom contient la chaîne "toto" :


<br /> Recherche du mot "pingus" dans les résumés de paquets<br />
<div class="code">urpmq -y toto</div>


<div class="code">urpmf --summary pingus<br /> pingus:summary:Pingus - A free Lemmings clone</div>
Sur quelle source se trouve le paquet toto :


Voir <code>man urpmf</code> pour de plus amples informations.<br />
<div class="code">urpmq --archive toto</div>


La commande '''urpmq''' vous permet d'autres types de requêtes :<br />
Quels paquets dépendent du paquet toto :


Liste des paquetages dont le nom contient la chaîne "toto" :<br /><code>urpmq -y toto</code><br />
<div class="code">urpmq -d toto</div>
Sur quelle source se trouve le paquetage toto :<br /><code>urpmq --archive toto</code><br />
Quels paquetages dépendent du paquetage toto :<br /><code>urpmq -d toto</code><br />
Nom complet du fichier rpm du paquetage toto :<br /><code>urpmq -r toto</code><br />
Résumé d'une ligne d'un paquet ( summary + nom + cersion ) :<br /><code> urpmq --summary toto</code>


Voir aussi <code>man urpmq</code>.<br />
Nom complet du fichier rpm du paquet toto :
 
<div class="code">urpmq -r toto</div>
 
Résumé d'une ligne d'un paquet ( summary + nom + cersion ) :
 
<div class="code">urpmq --summary toto</div>
 
Voir aussi <b>man urpmq</b>.<br />


=== Mettre à jour le système ===
=== 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.<br /> 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).<br /> Si la source de mise à jour s'appelle maj_secu, il faut lancer la commandes suivante pour la mettre à jour :<br /><code>urpmi.update maj_secu</code><br /> puis :<br /><code>urpmi --auto-select</code><br /> 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 <code>--auto</code>).
urpm vous permet de mettre à jour votre système avec les derniers correctifs de sécurité et les corrections de bugs que les distributions publient régulièrement.


Si vous souhaitez que urpm ne mette pas à jour automatiquement certains paquetages, il suffit d'ajouter leur nom dans le fichier <code>/etc/urpmi/skip.list</code> .<br /> Par exemple, pour empêcher urpm de mettre à jour automatiquement le kernel et la glibc, ajouter dans ce fichier :<br />
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 :
 
<div class="code">urpmi.update maj_secu</div>
 
puis :
 
<div class="code">urpmi --auto-select</div>
 
urpm va alors lister les paquets 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 <b>--auto</b>).
 
Si vous souhaitez que urpm ne mette pas à jour automatiquement certains paquets, il suffit d'ajouter leur nom dans le fichier <b>/etc/urpmi/skip.list</b> . Par exemple, pour empêcher urpm de mettre à jour automatiquement le kernel et la glibc, ajouter dans ce fichier :


<div class="code">kernel<br /> glibc</div>
<div class="code">kernel<br /> glibc</div>
Ligne 350 : Ligne 412 :
=== Conclusion sur urpm ===
=== 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.<br />
Les détails des commandes urpm sont encore trop peu connus ; la maintenance de votre Mandriva ou Mageia sera bien plus aisée avec leur utilisation.


----
<br />
<br />


<br />
== apt-get sur Red Hat ==


== apt-get sur Redhat ==
Comme dit plus haut, Red Hat et Fedora recommandent désormais le gestionnaire de paquets [[YUM]]. C'est ce que vous devez utiliser par défaut, le reste étant plus de la « bidouille » :-)


Redhat dispose également d'outils pour faciliter la gestion des packages et la mise à jour du système. J'ai testé <code>rpm-get</code> que je n'ai pas trouvé satisfaisant. Par-contre le portage de <code>apt-get</code> 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)
Cependant, Red Hat dispose également d'autres outils pour faciliter la gestion des paquets et la mise à jour du système. J'ai (Jice) testé <b>rpm-get</b> que je n'ai pas trouvé satisfaisant. Par-contre le portage de <b>apt-get</b> 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 <code>RPM</code> (contre <code>dpkg</code> pour Debian), est extrêmement efficace
Cette version de apt-get pour RPM, même si elle est critiquée parce qu'elle utilise <b>RPM</b> (contre <b>dpkg</b> pour Debian), est extrêmement efficace


Les principaux apports de <code>apt-get</code><nowiki>:</nowiki>
Les principaux apports de <b>apt-get</b><nowiki>:</nowiki>


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


=== Installation de apt-get ===
=== Installation de apt-get ===
Ligne 376 : Ligne 439 :
'''La configuration''' :
'''La configuration''' :


Elle est très simple. Une fois les packages installés il vous suffit de taper <code>apt-get update</code>. 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).
Elle est très simple. Une fois les packages installés il vous suffit de taper <b>apt-get update</b>. 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).


* <code>/etc/apt/sources.list</code> : 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.
* <b>/etc/apt/sources.list</b> : 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.
* <code>/etc/apt/apt.conf</code> : fichier de configuration de apt-get
* <b>/etc/apt/apt.conf</b> : fichier de configuration de apt-get
* <code>/var/cache/apt/archives</code> : contient les packages qui ont été downloadés pour être installés.
* <b>/var/cache/apt/archives</b> : contient les packages qui ont été downloadés pour être installés.


'''Commande supplémentaire''' :
'''Commande supplémentaire''' :


La commande <code>apt-cdrom</code> vous permet de rajouter directement au fichier <code>sources.list</code> des dépôts sur CD-ROM. <br />La syntaxe de la commande : <code>apt-cdrom --cdrom <point-de-montage> add</code><br />'''Exemple : '''<code>apt-cdrom --cdrom /mnt/cdrom add</code><br /> Il vous reste alors à insérer successivement tous les CD en votre possession qui contiennent les packages Redhat.
La commande <b>apt-cdrom</b> vous permet de rajouter directement au fichier <b>sources.list</b> des dépôts sur CD-ROM. <br />La syntaxe de la commande : <b>apt-cdrom --cdrom <point-de-montage> add</b><br />'''Exemple : '''<b>apt-cdrom --cdrom /mnt/cdrom add</b><br /> 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 / Désinstaller / Mettre à jour des packages ===
Ligne 390 : Ligne 453 :
==== 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 <b>apt-get</b> avec l'argument <b>install</b>.<br />'''Syntaxe''' : <b>apt-get install package1 [package2...]</b><br />'''Exemple''' : <b>apt-get install mplayer</b> 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 <b>source</b>.<br />'''Exemple :''' <b>apt-get source galeon</b> 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 <b>apt-get</b> avec l'argument <b>upgrade</b>. Il est plus sûr au préalable d'exécuter la commande <b>apt-get update</b> 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''' : <b>apt-get upgrade mplayer</b> mettra à jour mplayer et les packages éventuellement nécessaires pour régler les dépendances.


==== Désinstaller avec apt-get ====
==== Désinstaller avec apt-get ====


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


==== Mettre à jour le système ====
==== Mettre à jour le système ====


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


Vous disposez également de la commande <code>apt-get check</code>. Elle vous permet de vérifier que vous n'avez pas de dépendances non résolues sur votre système.
Vous disposez également de la commande <b>apt-get check</b>. 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é ====
==== Rechercher des informations sur un package installé ====


Enfin la commande <code>apt-cache</code> vous permet d'obtenir un certain nombre d'informations sur les packages installés :
Enfin la commande <b>apt-cache</b> 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 <b>search</b>.<br />'''Syntaxe''' : <b>apt-cache search chaine_de_caractères</b> (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 <b>depends</b>.<br />'''Syntaxe''' : <b>apt-cache depends chaine_de_caractères</b><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>


<div class="merci">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.</div>
== Voir aussi ==


= Copyright =
* [[YUM|Quelques subtiles options de YUM]]
Copyright &copy; 25/02/2000, Jean-Christophe Cardot, Anne-Laure Nicolas
* Les fiches pratiques pour l'installation de logiciels sous [[Fiches:Administration-ficheinstall-Fedora|Fedora]], [[Fiches:Administration-ficheinstall-Mandriva|Mandriva]] et [[Fiches:Administration-ficheinstall-Mageia|Mageia]].
{{CC-BY-NC-SA}}
* [[Installer un logiciel sous Linux]]
* [http://easyurpmi.zarb.org/?language=fr easy URPMI] : un site pour trouver des sources urpmi (toutes ?)


<br/>
<br/>
'''<b>[[Software-index|@ Retour à la rubrique Logiciels]]</b>'''


=Autres ressources=
== À propos de cette documentation ==


* [http://easyurpmi.zarb.org/?language=fr easy URPMI] : un site pour trouver des sources urpmi (toutes ?)
Cette documentation a été écrite par [[Utilisateur:LeaJice|Jean-Christophe 'Jice' Cardot]]; révision par Jean-Marc Lichtle, puis [[Utilisateur:LeaJice|Jice]] et [[Utilisateur:Ennael|Anne]], puis [[Utilisateur:maston28|Jean-Thomas Muyl (maston28)]]; petits ajouts et mises à jour par [[Utilisateur:Misc|Misc]] et [[Utilisateur:Jiel|Jiel]].
* [http://lis.snv.jussieu.fr/~rousse/linux/urpmi.html Introduction à URPMI] par Guillaume Rousse
 
Son titre original était ''RPM, URPMI et apt-get''. Elle a été scindée en trois partie en 2018, [[RPM]], [[URPMI]], [[Installation de apt-get sur Red Hat Linux 7.3]].
 
{{Copy|25/02/2000, 2001, 2002, 2004, 2005, 2006, 2011|[[Utilisateur:LeaJice|Jean-Christophe Cardot]], Jean-Marc Lichtle, [[Utilisateur:Ennael|Anne Nicolas]], [[Utilisateur:maston28|Jean-Thomas Muyl (maston28)]]|CC-BY-SA}}

Version du 19 septembre 2022 à 22:06

RPM

Installer des programmes sous GNU/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 paquets à ce format.

Voir aussi Quelques subtiles options de YUM et les fiches pratiques concernant l'installation de logiciels sous Fedora, Mandriva et Mageia.

Introduction

Le format RPM (RedHat Package Manager), a été, comme son nom l'indique, créé à l'origine pour la distribution Red Hat. Depuis, de nombreuses distributions l'ont utilisé, on peut citer par exemple Mandriva (ex-Mandrake) ou SuSE.

D'autres formats de paquets dans le monde Linux sont DEB (pour Debian) et TGZ (pour Slackware). Qu'est-ce qu'un paquet ? 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 paquet, package ou même paquetage 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 paquets 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 paquets nécessitent des droits d'administrateur (root).

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

Les noms des paquets 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 paquets 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 paquet :

rpm -ivh toto.rpm

Attention, si vous installez un paquet 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 paquet :

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 rubrique noyau à ce sujet.

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

rpm -Uvh --oldpaquet toto.rpm

Pour supprimer un paquet :

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 paquet qui auraient été installées ensemble.

Pour faire des requêtes sur les paquets :

Afficher la liste de tous les paquets 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 paquet 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 paquet 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 paquet, une brève description de ce que fait le paquet, 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 paquet pas encore installé :

rpm -qip toto.rpm

Avec un "p" comme "paquet".

Nota :

  • L'option p s'applique aussi à d'autres syntaxes, par exemple rpm -qlp toto.rpm pour avoir la liste des fichiers d'un paquet 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 paquet toto.rpm.

Retrouver le paquet d'origine d'un fichier :

rpm -qf /usr/lib/toto.txt

Il peut arriver que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquet 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 paquets installés. Oui, mais si on veut trouver un fichier parmi les paquets non installés ?
Si vous utilisez Mandriva (voir 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 paquet :

rpm -i --test toto

Effectue simplement une vérification sans installer le paquet 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 paquet 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 paquet toto

Il suffit alors de faire :

rpm -qa | grep toto

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

toto-1.1
toto-1.2

rpm -e toto-1.1

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

Extraire des fichiers d'un RPM :

Certains outils comme Midnight Commander (commande 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/paquet.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 paquets SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquet rpm. Afin de reconstruire un paquet rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :

# rpmbuild --rebuild paquet.src.rpm

Le paquet rpm résultant se trouvera dans /usr/src/RPM/RPMS/<arch><arch> est i386, i586, ppc, etc. suivant votre architecture.

Pour simplement installer le paquet, sans reconstruire le fichier .rpm, faire :

# rpmbuild --recompile paquet.src.rpm

Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des vôtres 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 - cet exemple date un peu -, 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 paquets -devel nécessaires aient été installés, ainsi que les compilateurs utilisés, etc. Voir l'article sur [[Software-soft_gere-compil|la compilation] .

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

Lorsque rpm installe un paquet, 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 paquet 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 paquets -devel ?

Vous avez sans doute remarqué que souvent, pour un paquet toto.rpm, vous aviez un deuxième paquet 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 paquet -devel.

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



Les commandes URPM* de Mandriva

La commande initiale rpm de Red Hat - souffrait de nombreuses limitations que Mandrake puis Mandriva a dépassées, en créant les outils urpm* (User RPM) à partir de Mandrake 7.0 (2000).

urpm est utilisée aujourd'hui par Mandriva et ses dérivées, comme Mageia. Red Hat utilise quant à lui désormais le gestionnaire de paquets YUM (depuis Fedora Core 1, en 2003) issu de la distribution Yellow Dog.

Les avantages d'urpm sur la commande rpm :

  • résolution automatique et installation/désistallation automatique des paquets dépendants (rpm indique seulement le nom de paquets manquants) ;
  • urpm connaît l'ensemble des paquets installables depuis différentes sources (les CD, serveurs ftp de mise à jour, Penguin Liberation Front ...) ;
  • urpm permet d'installer des paquets depuis internet lorsque ceux-ci sont plus récents que sur les CD (depuis Mandrake 8.0) ;
  • urpm permet d'installer des paquets en donnant seulement un nom incomplet (exemple : urpmi amarok pour chercher et installer Amarok, 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 graphique de programmes Rpmdrake (lançable via les menus ou par la commande rpmdrake) qui est une interface graphique 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 paquets

Après avoir installé votre distribution, le média d'installation (CD par exmeple) ont été créés dans la base de données de urpm en tant que source de paquets.

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

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

urpmi.update mes_rpm

De même, pour ajouter une source ftp de paquets, 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

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 paquets

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 paquet correspondant, regarder s'il doit installer des paquets dépendants (et vous en demander confirmation), et installer l'ensemble des paquets.

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

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

# urpmi -p libe2p.so.2

urpmi va alors rechercher quel paquet 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_paquet-version.i586.rpm

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

urpmi peut installer plusieurs paquets 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 paquet, 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 paquet

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

urpme mplayer

désinstallera mplayer. S'il y a des paquets 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 paquets rpm est urpmf. Cela permet de rechercher non seulement dans les paquets installés comme avec rpm -q, mais aussi des paquets installables !

urpmf toto

renverra la liste de tous les paquets 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 paquets.

Quelques exemples :

Liste des paquets du groupe "Games" :

urpmf --group Games

Taille du paquet "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 paquets dont le nom contient la chaîne "toto" :

urpmq -y toto

Sur quelle source se trouve le paquet toto :

urpmq --archive toto

Quels paquets dépendent du paquet toto :

urpmq -d toto

Nom complet du fichier rpm du paquet 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 les distributions publient 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 paquets 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 paquets, 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 détails des commandes urpm sont encore trop peu connus ; la maintenance de votre Mandriva ou Mageia sera bien plus aisée avec leur utilisation.



apt-get sur Red Hat

Comme dit plus haut, Red Hat et Fedora recommandent désormais le gestionnaire de paquets YUM. C'est ce que vous devez utiliser par défaut, le reste étant plus de la « bidouille » :-)

Cependant, Red Hat dispose également d'autres outils pour faciliter la gestion des paquets et la mise à jour du système. J'ai (Jice) 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 paquets ;
  • Mise à jour complète de la distribution avec les dernières versions des paquets 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

Voir aussi



@ Retour à la rubrique Logiciels

À propos de cette documentation

Cette documentation a été écrite par Jean-Christophe 'Jice' Cardot; révision par Jean-Marc Lichtle, puis Jice et Anne, puis Jean-Thomas Muyl (maston28); petits ajouts et mises à jour par Misc et Jiel.

Son titre original était RPM, URPMI et apt-get. Elle a été scindée en trois partie en 2018, RPM, URPMI, Installation de apt-get sur Red Hat Linux 7.3.

Copyright

© 25/02/2000, 2001, 2002, 2004, 2005, 2006, 2011 Jean-Christophe Cardot, Jean-Marc Lichtle, Anne Nicolas, Jean-Thomas Muyl (maston28)

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