From Mageia wiki
Jump to: navigation, search
(fixing link)
(Change cmd to template {{cmd}})
Line 224: Line 224:
 
</pre>
 
</pre>
  
Il s'agit là de ce qu'on appelle un tube incluant la commande [[cmd|grep]] (l'option {{cmd|-i}} rend la recherche ''insensible à la casse'', autrement dit la recherche ne distingue pas majuscules et minuscules). Ainsi une commande telle que
+
Il s'agit là de ce qu'on appelle un tube incluant la commande {{cmd|grep}} (l'option {{cmd|-i}} rend la recherche ''insensible à la casse'', autrement dit la recherche ne distingue pas majuscules et minuscules). Ainsi une commande telle que
  
 
<pre>
 
<pre>

Revision as of 11:30, 11 May 2019

Remarque :
La plupart des tâches présentées ici - si ce n'est toutes- peuvent être également réalisées :
  • en ligne de commande avec les outils Urpmi ;
  • à partir de l'interface graphique Centre de Contrôle de Mageia (CCM).


A quoi sert RPM ?

Que signifie 'RPM' ?

RPM est une abréviation de RPM Package manager, anciennement Red Hat package manager (gestionnaire de paquetage Red Hat). Utilisé pour la première fois par la distribution Red Hat Linux, c'est le format de paquetage qui a été choisi par de nombreux éditeurs de distributions Linux : Red Hat, SuSE, Mageia (déjà sous Mandriva), pour n'en nommer que quelques-uns.

Mais qu'est-ce donc qu'un paquetage?

Un paquetage est un fichier qui contient tous les fichiers appartenant à une certaine application, ou à une certaine bibliothèque ou à toute autre entité dont la nature est indiquée par le nom du paquetage. Un peu à la manière d'une archive ZIP ou TAR. Mais le paquetage n'est pas seulement une archive (compressée), il contient aussi des scripts de contrôle. Ces scripts sont lus, exécutés et stockés lors de l'installation locale du RPM. Ils gèrent l'installation, la désinstallation, les contrôles d'état, les dépendances etc.
Les paquetages sont construits par des 'mainteneurs' de paquetages qui font usage d'un fichier appelé specfile (fichier de spécification) qui détermine où doivent être installés les fichiers du paquetage, quels autres paquetages sont nécessaires pour assurer un fonctionnement correct, quels programmes doivent être exécutés avant ou après l'installation ou la désinstallation du paquetage. Le specfile contient aussi des informations sur l'identité de celui qui a construit le paquetage, une description des finalités du contenu du paquetage et bien d'autres choses encore.
Pour en savoir plus:

  • sur les paquetages, cliquer ici;
  • sur le specfile et la façon de construire un paquetage, cliquez ici.

Pour fonctionner efficacement, RPM doit conserver une trace de l'installation des paquetages sur un système donné. La base de données qui permet cela se trouve dans /var/lib/rpm. Comme vous le verrez, cette base de données permet d'obtenir un grand nombre d'informations utiles concernant les programmes installés.

Ce que RPM peut faire pour vous

Voici quelques-unes des choses que RPM et le mainteneur de paquetage peuvent faire pour vous :

  • Compiler le code source du programme et lui appliquer éventuellement des correctifs :
C'est très pratique, particulièrement pour les nouveaux utilisateurs. Compiler le code source et appliquer des correctifs (rustines) requiert quelques connaissances avancées, bien que cela ne relève en rien de la magie noire! Mais même si vous en savez assez pour compiler vous-même les sources, RPM est bien commode quand vous n'avez pas trop le temps de vous y mettre ou lorsque les sources sont volumineuses ou connues pour être délicates à manier.
  • Gérer les dépendances :
Contrairement aux systèmes d'exploitation monolithiques comme Windows, les systèmes Linux peuvent différer sensiblement les uns des autres selon la taille de l'installation, l'utilisation à laquelle on destine le système, les préférences personnelles de l'utilisateur etc.

Et donc au lieu de doter tous les systèmes Linux de tous les fichiers nécessaires, vous sélectionnez vous-même les fichiers, les programmes, les bibliothèques que vous voulez. Quand vous êtes sur le point d'installer un nouveau programme, RPM vérifie donc si vous avez sur votre système tout ce qu'il faut pour exécuter sans erreur ce nouveau programme (c'est ce qu'on appelle vérifier les dépendances, les dépendances du paquetage machin sont des paquetages qui doivent être installés sur votre système pour que machin puisse y fonctionner). Et, ce qui est plus important encore, il vous empêchera de supprimer accidentellement des paquetages qui sont essentiels pour d'autres paquetages ou même pour votre système tout entier.

  • Fournir des informations sur les fichiers :
RPM offre de nombreuses possibilités d'obtention d'informations sur les paquetages, qu'ils soient installés ou pas. Il est possible de contrôler l'intégrité des nouveaux paquetages avant de les installer et de vérifier ensuite s'ils ont été installés correctement. On peut déterminer quels paquetages ont été installés, quand ils l'ont été, et quel espace ils occupent, quelle documentation et quels fichiers de configuration ils contiennent, quels changements récents leur ont été appliqués par le mainteneur du paquetage et d'autres choses encore.
  • Contrôles de sécurité :
RPM offre un mécanisme pour signer les paquetages avec une signature PGP ou GPG. Vous pouvez ainsi vous assurer que le paquetage n'a pas été trafiqué.
  • Automatisation :
RPM peut être utilisé, et l'est effectivement, dans de nombreux scripts destinés à automatiser des tâches de maintenance. Il offre un fondement solide à des outils graphiques RPM et à des extensions telles que rpmfind ou le système urpmi propre à Mageia (auparavant Mandriva).
  • Des suppressions propres :
Une simple commande suffit pour supprimer une application qui a été installée sur votre système par RPM. Cette commande supprimera tout sauf les fichiers qui ont été modifiés pendant l'installation du paquetage (généralement des fichiers de configuration ou de files d'attente).
  • Préserver les fichiers de configuration :
Le mainteneur du paquetage choisit comment seront gérés les fichiers de configuration des versions antérieures du paquetage. Il peut soit les laisser en place et créer les nouvelles versions sous la forme de fichiers rpmnew, ou bien dire à RPM de renommer les anciens fichiers de configuration sous la forme de fichiers rpmsave et les remplacer par la nouvelle version.
  • Différencier version exécutable et version compilation des fichiers :
Les paquetages qui contiennent des bibliothèques de programmes possèdent une version exécutable et une version de développement pour la compilation. Le nom du paquetage de la version de développement contient toujours la mention : devel. Si vous ne compilez pas de programme vous n'avez pas besoin d'installer les paquetages devel. Vous pouvez aussi les installer quand vous avez à compiler un logiciel et les supprimer ensuite.
  • Réseaux :
Cela n'a pas d'importance pour RPM que le paquetage sur lequel vous lui demandiez d'opérer se trouve sur un système de fichiers local, un montage NFS ou un serveur FTP, pourvu que vous lui fournissiez le chemin complet du ou des fichier(s).
  • Refaire facilement un paquetage :
Tout RPM qui contient un logiciel libre ou open source provient d'un RPM source (appelé SRPM ou src.rpm). Ce SRPM contient tout ce qu'il faut pour construire le RPM, ou les RPM, correspondant(s).

Cela peut être utile lorsque vous voulez utiliser des options de compilation différentes ou simplement adapter le paquetage à l'environnement particulier de votre système (version de la distribution, version du noyau, versions de bibliothèques etc.), sans pour autant vous procurer vous-même les sources, ni appliquer tous les correctifs requis etc.

Ce que RPM ne peut pas faire pour vous

Comme tout outil, RPM a des limites :

  • Pas de résolution automatique des dépendances :
RPM vous dira ce qui manque, mais il n'ira pas le chercher et l'installer pour vous. Cette limitation majeure peut être - au moins en partie - surmontée en utilisant des extensions telles que Urpmi de Mageia ou le script général rpmfind, ou encore l'interface graphique CCM.
  • Pas de configuration interactive :
Les paquetages fournis par le distributeur contiennent d'ordinaire des fichiers de configuration adaptés et des scripts de post-installation. Les étapes de configuration interactive cependant doivent être accomplies, si nécessaire, indépendamment de l'installation.
  • Pas de protection contre les erreurs commises lors de la construction du paquetage :
Nous commettons tous des erreurs et les mainteneurs de paquetage ne font pas exception. Des specfiles incorrects peuvent empêcher un programme d'être exécuté correctement après l'installation. Théoriquement, il est même possible d'utiliser RPM pour endommager délibérément un système (puisque l'installation doit être faite en tant que root). Vous devez donc utiliser exclusivement des paquetages qui proviennent de sources sûres.
  • Aucune garantie de compatibilité :
RPM est utilisé par de nombreux distributeurs de Linux et par des indépendants. Des politiques différentes de construction de paquetage pourraient empêcher l'installation d'un paquetage ou l'exécution du programme après installation (par exemple en plaçant l'exécutable dans un répertoire différent de celui qui convient pour votre distribution). Préférez donc des paquetages en provenance de l'auteur de votre distribution à ceux des autres.
  • Optimisations :
Il est possible d'optimiser des RPM pour un certain type de processeur en compilant le programme source avec les options appropriées. Mageia permet cela.
Mais ces options de compilation ne sont qu'une petite partie de tout un vaste ensemble de paramétrages de la compilation.
Le plus souvent le mainteneur tentera d'activer autant d'options que possible, ce qui aboutira à des exécutables plus volumineux - et parfois plus lents - et à de gros paquetages avec énormément de fichiers. Conclusion : si vous voulez un réglage fin, il vous faudra compiler les sources vous-même .

Bien que RPM ne soit pas parfait, c'est un outil très souple, et tout particulièrement lorsqu'il est utilisé avec des extensions comme Urpmi.

Opérations courantes - Interrogations avancées

Remarque :
Pour installer un logiciel vous devez vous connecter en tant qu'administrateur (root). Mais pour des raisons de sécurité vous devez toujours vous connecter comme simple utilisateur et ensuite seulement taper le mot de passe de administrateur, lorsqu'il vous est demandé par une application graphique, ou bien dans la fenêtre de commande du shell.

Les noms de paquetage

Un nom de RPM se subdivise en trois parties (au moins) : le nom d'archive, le numéro de version et le numéro de version du paquetage.
Ainsi Template:Pkg signifie : Ce paquetage contient une archive dénommée mc, version 4.6.2 et il constitue la troisème révision de ce paquetage particulier. mdv est l'indication (optionnelle) de la distribution, et qui est généralement complété en mga2015.0 pour indiquer en plus de la distribution la version de cette distribution, ici Mageia 2015.0.

Pourquoi ajouter un numéro supplémentaire pour le paquetage ? Mettre au point un paquetage n'est pas une mince affaire. Parfois la personne qui s'en charge peut négliger un détail et doit mettre au point un nouveau paquetage corrigé. Ou bien cette personne peut découvrir un moyen d'améliorer le paquetage. Le numéro de version du paquetage permet alors de mettre à jour des paquetages qui concernent la même version d'une archive. Notez qu'un numéro de version de paquetage peut être constitué de deux parties, séparées par un point. Ceci signifie généralement qu'il y a eu une ou des révision(s) de sécurité.

Une quatrième indication est parfois présente, elle correspond à « l'architecture » du système (au type de processeur qu'il utilise), par exemple : Template:Pkg serait un paquetage destiné à l'architecture i586. Un paquetage qui, dans la même position, contiendrait l'indication noarch serait compatible en principe avec toute architecture : Template:Pkg.

Tôt ou tard vous rencontrerez des paquetages tels que celui-ci : Template:Pkg. Il s'agit-là d'un RPM Source (src.RPM ou SRPM). Si vous ignorez de quoi il s'agit, il ne vous sera d'aucune utilité. Les SRPM servent en fait à recompiler des RPM.

Nom d'archive ou nom de fichier ?

RPM traite différemment les paquetages non installés et les paquetages installés.
Les opérations sur les paquetages non installés requièrent le nom de fichier complet comme argument de la commande RPM, ainsi :

rpm -i mc-4.6.2-3mdv.rpm

installe le paquetage Template:Pkg sur le système local.

Si au contraire vous voulez faire quelque chose qui concerne un paquetage installé, c'est son nom d'archive qui sera requis ; par exemple :

rpm -e mc

supprime du système le paquetage qui contient l'archive mc. Cette façon de procéder est rendue possible par le fait que l'on ne peut installer deux RPM ayant le même nom d'archive sur le même système.
Tentez de lancer une commande comme la suivante, vous obtiendrez un message d'erreur :

rpm -e mc-4.6.2-3mdv.rpm
erreur : le paquetage mc-4.6.2-3mdv.rpm n'est pas installé

même dans le cas où le paquetage est en fait bel et bien installé.

Opérations courantes

RPM admet un grand nombre d'options. Fort heureusement il est assez facile de déterminer ce qu'elles font d'après leur nom.
La plupart des options ont deux variantes : une version longue et une version courte. La version longue comprend deux traits d'union suivis du nom complet de l'option, la version courte comprend un seul trait d'union suivi - dans la plupart des cas - par le premier caractère du nom complet de l'option. Bien entendu vous ne devez fournir que l'une des deux formes, autrement dit, par exemple, pour installer un paquetage, vous devrez taper soit :

rpm --install paquetage

soit :

rpm -i paquetage

Si l'argument passé à RPM est un nom de fichier, vous pouvez faire usage de l'expansion des noms de fichier pour faire référence à un ensemble de fichiers, ainsi :

rpm -i bla*

installera tous les paquetages du répertoire courant dont le nom commence par la chaîne de caractères bla. Les opérations qui requièrent le nom d'archive, en revanche, n'acceptent pas l'expansion des noms de fichier :

rpm -e *gtk*
erreur: le paquetage *gtk* n'est pas installé

Souvenez-vous que RPM ne se soucie pas de savoir si les paquetages non installés sont sur un système de fichiers local ou sur un serveur web ou FTP éloigné. Une opération concernant un/des paquetage(s) non installé(s) peut être faite à distance en fournissant l'URL complète du/des paquetage(s), par exemple :

rpm -qpi ftp://ftp.server.com/RPMS/bla*

vous donnera les descriptions de tous les paquetages dont le nom commence par bla qui sont situés dans le répertoire RPMS de ftp.server.com (pour la signification exacte des options utilisées voir plus bas).

Installation, mise à jour, suppression

Toutes ces commandes supposent de disposer des privilèges de l'utilisateur root.

  • rpm -i paquetage
    installe un paquetage (peut être utilisé pour installer une application nouvelle, à éviter pour une mise à jour d'une application déjà présente sur le système; s'emploie cependant aussi dans le cas très particulier de l'installation d'une nouvelle version du noyau Linux).
  • rpm -e archive
    supprime une application installée précédemment via RPM ou urpmi (-e de l'anglais erase).

Template:Astuce-fr


  • rpm -U paquetage

met à jour vers une nouvelle version (anglais u<pgrade) une application déjà installée via RPM ou urpmi ou installe l'application si elle n'est pas déjà présente.

  • rpm -F paquetages

rafraîchit (-F de l'anglais freshen) un ensemble de RPM. Autrement dit cette commande détermine lesquels des paquetages spécifiés sont déjà installés dans des versions antérieures et elle les met à jour, en suivant l'ordre correct des versions, mais elle n'installera pas une application qui n'est pas déjà présente sur le système (contrairement à l'option -U).

Deux modifieurs spéciaux peuvent être utilisés avec ces options, --test and --verbose (ou -v).

  • --test se borne à faire mine d'exécuter la commande: autrement dit vous obtiendrez tous les messages que RPM aurait affichés lors d'une exécution mais en fait la commmande n'est pas exécutée. Ce modifieur ne possède pas de version courte.
  • --verbose (-v) augmente la quantité d'informations affichées à l'écran. Ceci est tout particulièrement utile lorsque des erreurs se produisent ou en association avec le modifieur --test. Ajouter un -v supplémentaire (ce qui donne : -vv) augmente encore la quantité d'informations affichées.

Interroger la base de données de RPM

Ces commandes ne nécessitent pas d'être connecté sous [root]. Notez bien que lorsque vous lancez une interrogation sur des paquetages non installés vous devez ajouter l'option -p à l'option d'interrogation -q.

  • rpm -q archive
    demande (de l'anglais : queries) le nom de paquetage d'un paquetage installé, numéro de version et numéro de paquetages inclus, mais sans l'indication de l'architecture  :
rpm -q mc
mc-4.6.2-3mga2015.0
  • rpm -qi archive
    vous donne des informations sur les finalités du paquetage, qui l'a fait, quand et où, quand le paquetage a été installé, quelle est sa taille etc. Pour demander les mêmes informations sur un paquetage non installé, lancez rpm -qpi paquetage
  • rpm -ql archive
    affiche la liste de tous les fichiers d'un paquetage installé. Pour demander les mêmes informations sur un paquetage non installé, lancez rpm -qpl paquetage
  • rpm -qd archive
    affiche la liste de tous les fichiers de documentation d'un paquetage installé. Pour demander les mêmes informations sur un paquetage non installé, lancez rpm -qpd paquetage
  • rpm -qc archive
    affiche la liste des fichiers de configuration d'un paquetage installé (essayez par exemple avec Template:Pkg).
  • rpm -qcf chemin_de_commande
    affiche la liste de tous les fichiers de configuration de la commande (essayez par exemple avec /bin/ls ou avec /bin/bash).
  • rpm -qR archive
    énumère la liste de tous les fichiers dont dépend le paquetage installé. Pour demander les mêmes informations sur un paquetage non installé, lancez rpm -qpR paquetage
  • rpm -qa
    énumère la liste de tous (de l'anglais all) les paquetages installés. Particulièrement utile quand utilisé en combinaison avec grep, par exemple
    cmd|rpm -qa | grep -i kde
    trouvera tous les paquetages dont le nom contient la chaîne de caractères 'kde', quelle que soit la casse (option '-i').
  • rpm -qa --last
    énumère la liste de tous les paquetages installés triés par date d'installation en commençant par le plus récent.

En pratique, on utilisera rpm -qa --last | less pour gérer l'affichage.

  • rpm -q --changelog archive
    affiche la liste des modifications successives que le mainteneur du paquetage a fait subir au paquetage.
  • rpm -qf fichier
    indique à quel paquetage le fichier fichier appartient.

Interrogation avancée

En ayant recours à des utilitaires supplémentaires et à l'option --queryformat, il n'y aura pas grand chose que vous ne puissiez découvrir concernant soit un paquetage particulier soit la base de données RPM locale.

A la recherche des paquetages installés qui correspondent à un certain motif

Un problème courant : vous voulez vérifier si un paquetage est installé, mais vous ne vous souvenez plus très bien de son nom (ou bien vous êtes trop paresseux pour le taper en entier...). Faites alors :

rpm -qa | grep -i motif

Il s'agit là de ce qu'on appelle un tube incluant la commande grep (l'option -i rend la recherche insensible à la casse, autrement dit la recherche ne distingue pas majuscules et minuscules). Ainsi une commande telle que

rpm -qa | grep -i xorg

vous renverra la liste de tous les paquetages installés dont le nom contient la chaîne de caractères xorg, quelle que soit la casse.

A la recherche d'un fichier dans les paquetages non installés

Autre problème courant : trouver quel paquetage contient un certain fichier. Mettez votre CD de Mageia dans votre lecteur (donc, disons, dans /mnt/cdrom) et tapez ceci dans une console :

for i in $(find /mnt/cdrom -name '\*.rpm') ; do rpm -qpli $i | grep nom_de_fichier && echo $i ; done

Cette boucle for-do renverra le nom du paquetage qui contient le fichier nom_de_fichier s'il y en a un sur le CD (nom_de_fichier pourra être soit le nom exact du fichier, soit une chaîne de caractères incluse dans le nom du fichier que vous cherchez, dans ce dernier cas vous obtiendrez la liste de tous les fichiers présents sur le CD dont le nom contient cette suite de caractères). C'est là une procédure un peu laborieuse, les interrogations avancées devraient d'ordinaire être effectuées plutôt avec l'outil urpm de Mageia, qui est décrit ici.

Afficher par ordre de taille la liste des paquetages installés

Si vous avez pris la peine de lire l'introduction en première page, vous savez déjà que les RPM sont confectionnés à l'aide de fichiers 'spec'. L'option --queryformat vous permet d'interroger chaque champ particulier du fichier spec de n'importe quel RPM et dans n'importe quel ordre. Pour obtenir une liste de tous les champs valides, tapez :

rpm --querytags

Le format à utiliser est ici un peu compliqué et mieux vaut en donner une idée à l'aide d'un exemple.
Imaginez que vous soyez à court d'espace disque et que vous souhaitiez obtenir une liste de tous les paquetages installés présentés par ordre de taille, pour déterminer quel paquetage il pourrait être approprié de désinstaller. C'est précisément ce que vous donnera la commande suivante (tapée sur la console en une seule ligne) :

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

C'est la première partie qui fait tout le travail : elle fait porter l'interrogation sur l'ensemble des paquetages en utilisant uniquement les querytags (champs) name (nom) et size (taille), qui doivent être entourés ainsi : %{champ}. Etant donné que la chaîne de caractères qui contient les 'querytags' contient des espaces, elle doit être elle-même placée entre guillemets simples. Le symbole \n insère un alinea après chaque ligne.
La commande sort (trier) trie la sortie de la commande précédente par ordre de taille croissante (Pour la commande sort les champs sont numérotés à partir de '0', le champ name est donc ici le champ 0 et le champ size est le champ 1 : l'option +1 demande donc à sort d'effectuer le tri d'après le champ 1 (size), donc par taille ; l'option -n lui demande de considérer ce champ comme représentant des nombres et non de simples caractères). La commande column, avec l'option -t, affiche deux colonnes joliment séparées : les noms à gauche et la taille en octets à droite (Essayez donc de voir ce qui se passe si vous remplacez l'option -t par l'option -x.). Comme vous le voyez, on peut faire toute sorte de jolies choses avec RPM ! Seulement plus vous voudrez en faire et plus la syntaxe de RPM deviendra compliquée... Et certaines facilités, comme la résolution automatique des dépendances, resteront absolument hors de portée. Il sera alors temps d'aller du côté de l'outil urpm de Mageia...

Aller plus loin

Autres ressources

L'article sur Urpmi

et bien sûr man rpm.

Autres informations

Les sources de cet article remontent à l'ancienne Base de Connaissance.

Révision / Modifié : 22 Mai 2015
Auteur: Tom Berger, traduction/adaptation par ptyxs (juillet/août 2005), importé par admel (Mai 2015)