SDB:Rpm - Le gestionnaire de paquetages de SuSE Linux

Aller à : navigation, rechercher


Version: 5.0

rpm - Le gestionnaire de paquetages de SuSE Linux

C'est depuis la version 5.0 que »rpm« (en anglais Red Hat Package Manager) a été introduit dans SuSE Linux. Grâce à cela, la gestion des paquetages a pu être simplifiée pour tous les intéressés, les utilisateurs, les administrateurs de système et, bien sûr, pour ceux qui créent les paquetages. Grâce à la base de données des RPM on dispose, à tout moment, d'informations très détaillées sur les logiciels installés.

rpm peut en principe opérer dans trois modes differents : créer des paquetages qu'on peut installer à partir des sources d'origine intactes (en anglais pristine sources), les installer, respectivement les désinstaller, ou les mettre à jour, et soumettre des requêtes soit à la base de données RPM, soit à une archive prise isolément. Dans les sections suivantes nous parlerons en détail des deux derniers points.

Les archives RPM à installer se présente dans un format binaire spécial ; elles sont composées de fichiers (programmes) à installer et de différentes sortes de méta-informations qui sont utilisées durant l'installation de rpm en vue de configurer le paquetage considéré ; celles-ci peuvent aussi être sauvegardées dans la base de données des RPM pour la documentation. Les archives sont munies du suffixe .rpm.

Gestion des paquetages : installation, mise à jour et désinstallation

En principe il est très facile d'installer une archive RPM :

        rpm -i PAQUETAGE.rpm

Avec cette commande on peut aisément installer un paquetage RPM dans le cas où il n'y a pas de "conflits" et si les conditions de "dépendance" sont remplies. Dans le cas où les conditions de dépendance ne sont pas reunies, rpm émet un message d'erreur afin de déterminer les paquetages nécessaires. La base de données veille en arrière-plan à ce qu'il n'y ait pas de conflits : normalement un fichier doit appartenir à un seul paquetage. A l'aide des différentes options qu'offre rpm, on peut aller au delà de ces régles - cependant, celui qui veut les utiliser doit savoir exactement ce qu'il fait sinon il risque de créer des problèmes lors de la mise à jour d'un paquetage.

L'option -U respectivement --upgrade est également très intéressante pour procéder à la mise à jour d'un paquetage. Elle se charge d'effacer l'ancienne version d'un paquetage puis d'en installer la nouvelle version. Dans le même temps, rpm tente de gérer avec précaution les fichiers de configuration en suivant la stratégie suivante :

  • Dans le cas où un fichier de configuration n'a pas été modifié par l'administrateur de système, la nouvelle version du fichier correspondant sera installée par rpm. Aucune manipulation de la part de l'administrateur n'est requise.
  • Dans le cas où un fichier de configuration a été modifié par l'administrateur de système à un moment quelconque avant la mise à jour, rpm procédera alors à une sauvegarde (avec le suffixe .rpmorig) du fichier modifié et installera la nouvelle version du paquetage RPM uniquement si le fichier original et le fichier du paquetage de mise à jour diffèrent. Dans ce cas, il est très probable que vous aurez à adapter le fichier de configuration fraîchement installé aux conditions de votre système à l'aide de votre copie de sauvegarde (.rpmorig). Après cela, il est indispensable d'effacer tous les fichier .rpmorig afin de ne pas poser de problèmes lors des prochaines mises à jour.

Après chaque mise à jour, vous devez absolument contrôler toutes les copies de sauvegarde (avec le suffixe .rpmorig) réalisées par rpm ; il s'agit de vos anciens fichiers de configuration. Si cela s'avère indispensable, pensez à procéder aux modifications nécessaires (telles que dans les fichiers .rpmorig) dans vos nouveaux fichiers de configuration puis effacez vos anciens fichiers .rpmorig.

Dans le cas où un paquetage doit tout simplement être désinstallé/effacé, on procède de la manière suivante :

rpm -e PAKET

Cependant, rpm ne désinstallera/effacera un paquetage que si aucune dépendance n'existe plus ; ainsi, il n'est pas possible de désinstaller/effacer, par exemple, Tcl/Tk aussi longtemps que n'importe quel programme aura besoin de cette application pour fonctionner. RPM vérifie cela à l'aide de la base de données.

Dans le cas exceptionnel où une telle opération de désinstallation ne serait pas possible bien que plus aucune dépendance n'existe, il peut être utile de reconstituer la base de données RPM à l'aide de l'option --rebuilddb ; vous trouverez plus d'informations à ce sujet ici : fr:SDB:rpm - Le gestionnaire de paquetages de SuSE Linux.

Requêtes :

On peut procéder à des requêtes à l'aide de l'option -q (en anglais query). Cette option peut être utilisée pour effectuer une requête dans une archive RPM (option -p FICHIER_PAQUETAGE) comme dans la base de données RPM. On peut également spécifier encore l'information requise à l'aide de switches supplémentaires :

-i
Affiche les informations relatives au paquetage
-l
Affiche la liste des fichiers du paquetage
-f FICHIER+
Affiche le paquetage qui contient le fichier FICHIER ; FICHIER doit ici être saisi avec son chemin complet !
-s
Affiche le statut des fichiers (nécessite -l)
-d
Affiche uniquement les fichiers de documentation (nécessite -l)
-c
Affiche uniquement les fichiers de configuration (nécessite -l)
--dump
Affiche toutes les informations vérifiables pour chaque fichier (utiliser avec -l, -c ou -d !)
--provides
Affiche les caractéristiques du paquetage
--requires, -R
Affiche les dépendances du paquetage
--scripts
Affiche les différentes installations/désinstallations

La commande :

        rpm -q -i rpm

donne, par exemple, les informations suivantes :

Name        : rpm                         Distribution: SuSE Linux 6.1 (i386)
Version     : 2.5.5                             Vendor: SuSE GmbH, Nuernberg,
 Germany
Release     : 20                            Build Date: Fri Mar 19 02:04:57 1999
Install date: Sat Mar 20 15:36:00 1999      Build Host: Bareis.suse.de
Group       : unsorted                      Source RPM: rpm-2.5.5-20.src.rpm
Size        : 2111887                          License: GPL
Packager    : feedback@suse.de
Summary     : rpm - Red Hat Package Manager
Description :
rpm (Red Hat Package Manager) is the main tool for managing software packages
of the SuSELinux distribution.
rpm can be used to install and remove software packages; with rpm it's easy to
update packages.  rpm keep track of all these manipulations in a central
database. This way it is possible to get an overview of all installed
packages; rpm also supports database queries.

L'option -f fonctionne uniquement si vous connaissez le nom complet du fichier avec le chemin ; il est possible de donner autant de noms de fichier que l'on souhaite, par exemple :

         rpm -q -f /bin/rpm /usr/bin/wget

donne le résultat suivant :

rpm-2.5.5-20
wget-1.5.3-34

Si vous ne connaissez qu'une partie du nom du fichier, vous devrez avoir recours à un scritp de ce type pour vous aider (le script nécessite le nom du fichier comme paramètre) :

         #! /bin/sh
        for i in `rpm -q -a -l | grep  $1 `; do
            echo »$i« ist in Paket:
            rpm -q -f $i
            echo ""
        done

La base de données peut être utilisée pour procéder à des vérifications ; ces requêtes sont démarrées avec l'option -V (qui a la même signification que -y ou --verify). Avec ces options, rpm affiche tous les fichiers qui sont différents de leur ancienne version telle qu'elle était dans le paquetage original. rpm affiche jusqu'à huit lettres devant le nom du fichier qui correspondent aux changements suivants :

5
MD5-somme de la vérification
S
taille du fichier
L
lien symbolique
T
date de la modification
D
périphérique
U
utilisateur (user)
G
groupe (group)
M
mode (permissions et types inclus)

En outre, dans le cas des fichiers de configuration, un c sera également affiché. Par exemple, dans le cas où quelque chose dans /etc/wgetrc de wget a été modifié :

        rpm -V wget
        S.5....T c /etc/wgetrc

Base de données RPM

Les fichiers de la base de données RPM se trouvent sous /var/lib/rpm. Dans le cas d'une partition /usr de 500 Mo, la base de données peut facilement nécessiter 20 Mo d'espace disque ; en particulier après une mise à jour complète. Si la base de données apparaît particulièrement importante, il peut être utile de reconstituer une base de données à partir de la base de données déjà existante à l'aide de l'option --rebuilddb ; il est sage de faire une copie de sauvegarde de l'ancienne base de données avant de procéder à une telle reconstitution ("Rebuild").

En outre, le script cron cron.daily crée, chaque jour où des changement ont eu lieu, une copie de la base de données, la compacte et la sauvegarde sous /var/adm/backup/rpmdb ; le nombre des copies de la base de données est déterminé par la variable MAX_RPMDB_BACKUPS (par défaut : 5) dans /etc/rc.config ; il faut compter avec environ 3 Mo par copie (dans le cas d'un /usr de 500 Mo). Il est nécessaire de tenir compte de l'espace de disque requis à cette fin lors de la définition de la taille de la partition root si vous ne prévoyez pas de partition /var propre.

Outils pour les archives RPM

Le Midnight Commander (mc) est capable de montrer ou de copier le contenu d'une archive RPM, respectivement de parties de cette archive, d'un endroit vers un autre. Il affiche le contenu d'une telle archive sous forme d'un système de fichiers virtuel afin que tous les contrôles habituels du menu du Midnight Commander, lorque cela a un sens, soient à disposition : les informations contenues dans l'en-tête du "fichier" HEADER peuvent être affichées à l'aide de F3 ; avec les touches de direction du curseur et la touche entrée, vous pouvez "naviguer" dans la structure de l'archive et, si nécessaire, en recopier des composants à l'aide de la touche F5. Au passage, on remarquera que Emacs peut également réaliser cette "navigation" avec un module additionnel ;-)

Avec Alien (alien), il est possible de convertir le format de paquetage des différentes distributions. Ainsi, on peut tenter de convertir d'anciennes archives TGZ en archives RPM avant de procéder à leur installation afin que, durant celle-ci, la base de données RPM puisse obtenir les informations qui concernent ce paquetage. Cependant, attention : alien est un script perl et se trouve toujours dans un stade "alpha", d'après l'auteur du programme, même s'il se trouve déjà dans sa version 6.18 en ce moment (6.1). <keyword>rpm,paquetages,paketmanager,gestionnairede</keyword>