Gestion RPM

mercredi 15 avril 2009
par  Jerome ROBERT
popularité : 3%

I. Introduction

RPM (Red Hat Package Manager) est un outil de gestion de packages pour système Linux et Unix. Red Hat Software encourage les différents distributeurs àjeter un coup d’oeil àRPM et àl’utiliser dans leurs propres produits. RPM est distribuable sous les termes de la licence GPL.

Pour un utilisateur, RPM permet de maintenir le plus simplement du monde son système : l’installation, la suppression ou la mise àjour d’un package s’effectuent àl’aide d’une simple ligne de commande. RPM maintient une base de données des packages installés et de leurs fichiers, ce qui vous permet d’interroger et de vérifier facilement votre système. Durant les mises àjour, RPM conserve vos fichiers de configuration ce qui est impossible avec des fichiers .tar.gz.

Pour les programmeurs, RPM permet de créer des packages sources et binaires qu’ils pourront distribuer auprès des autres utilisateurs. Le procédé utilisé est d’une grande simplicité et s’effectue grâce àun fichier unique. Ce fichier est composé des sources du package et des mises àjour optionnelles que vous aurez créé. La maintenance du package est simplifiée, lorsque de nouvelles versions du logiciel apparaissent.

RPM possède cinq fonctions différentes (sans compter la création de package) : installation, suppression, mise àjour, interrogation et vérification. Voici une présentation de ces cinq fonctions. Pour plus d’informations et pour une description des options, utilisez la commande rpm –help.

 

II. Objectifs de RPM

Avant de chercher àutiliser RPM, il est préférable de savoir àquoi il peut servir.

Mise àjour : vous pouvez avec RPM effectuez une mise àjour des différents composants de votre système sans avoir àtout réinstaller.

Lorsque vous avez àvotre disposition une nouvelle version d’un système d’exploitation basée sur RPM (ex : Red Hat Linux), vous n’avez pas besoin de réinstaller votre machine (comme vous le feriez pour d’autres systèmes). RPM effectue une mise àjour automatisée et intelligente de votre système. Vos fichiers de configuration seront conservés lors de la procédure de mise àjour.

Interrogation : RPM possède des fonctions d’interrogation très poussées. Vous pouvez effectuer des recherches, grâce àla base de données, sur des packages ou sur un simple fichier. Ainsi, vous pouvez facilement savoir àquel package appartient tel ou tel fichier et donc savoir d’où il vient. Les fichiers contenus dans un package RPM se trouvent dans une archive compressée, avec un en-tête binaire contenant des informations sur le package et son contenu. Vous pouvez ainsi interroger rapidement et individuellement les packages.

Vérification du système : RPM possède aussi des fonctions de vérification des packages. Si vous pensez avoir effacé un fichier contenu dans un package, il vous suffit de vérifier ce package et toute anomalie vous sera rapportée. Si nécessaire, vous pouvez alors réinstaller le package, sans que vos fichiers de configuration soient supprimés.

Sources premières : un des objectifs est de permettre l’utilisation des sources premières, telles qu’elles sont distribuées par les auteurs du logiciel. Avec RPM, vous aurez àvotre disposition les sources premières, les mises àjour (patch) utilisés et les instructions nécessaires àla compilation. C’est un grand avantage, et pour plusieurs raisons. Par exemple, vous pouvez facilement évoluer vers une nouvelle version de package. Il vous suffit de jeter un simple coup d’oeil aux mises àjour (patch) pour savoir ce qu’il vous suffit de faire.

Tout ceci est d’une grande importance pour les programmeurs, mais au final les utilisateurs en seront aussi très satisfaits. Nous tenons àremercier nos amis de la distribution BOGUS qui sont àl’origine de ce concept.

 

III. Installation

Les packages RPM ont généralement des noms du type foo-1.0-1.i386.rpm, (foo) est le nom du package, (1.0) la version, (1) le numéro de mise àjour, et (i386) l’architecture. Pour installer un package, utilisez simplement la commande :

rpm -ivh foo-1.0-1.i386.rpm

foo ####################

Comme vous pouvez le constater, RPM affiche le nom du package (qui ne correspond pas forcément au nom du fichier, qui aurait pu être 1.rpm) et une succession de caractères # qui représentent une jauge de progression.

L’installation de package est très simple, mais vous pouvez tout de même rencontrer quelques erreurs :

Package déjàinstallé

Si le package est déjàinstallé, vous verrez apparaître :

rpm -ivh foo-1.0-1.i386.rpm foo package
foo-1.0-1 is already installed error :
foo-1.0-1.i386.rpm cannot be installed

 

Si vous voulez vraiment installer ce package, utilisez l’option —replacepkgs qui permet d’ignorer l’erreur.

rpm -ivh —replacepkgs foo-1.0-1.i386.rpm
foo ####################################

 

Fichiers en conflit

Si vous tentez d’installer un package qui contient un fichier déjàinstallé

sur le système, vous verrez apparaître :

rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1 error : foo-1.0-1.i386.rpm cannot be installed

Pour ignorer l’erreur, utilisez l’option —replacefiles.

rpm -ivh —replacefiles
foo-1.0-1.i386.rpm
foo ####################################

Dépendances

Des packages RPM peuvent dépendre d’autres packages, ce qui signifie qu’ils doivent au préalable être installés pour que tout fonctionne correctement. Si vous tentez d’installer un package dépendant d’un autre package, vous verrez apparaître :

rpm -ivh bar-1.0-1.i386.rpm
failed dependencies : foo is needed by bar-1.0-1

Pour éviter ce problème, vous devez d’abord installer les packages requis. Vous pouvez tout de même forcer l’installation (mais le package risque fort de ne pas fonctionner) en utilisant l’option —nodeps.

 

IV. Suppression

 

La suppression d’un package est aussi simple que son installation :

rpm -e foo

Note : nous utilisons ici le nom foo, qui n’est pas le nom original du package

(ici foo-1.0-1.i386.rpm).

Lors d’une suppression , vous pouvez rencontrer des problèmes de dépendances dans le cas où le package que vous tentez de supprimer est requis par d’autres packages. Vous verrez apparaître :

rpm -e foo
removing these packages would break dependencies : foo is needed by bar-1.0-1

Vous pouvez tout de même forcer la suppression (mais les packages dépendants risquent fort de ne pas fonctionner) en utilisant l’option —nodeps.

 

V. Mise àjour

 

La mise àjour d’un package est aussi simple que son installation :

rpm -Uvh foo-2.0-1.i386.rpm

 

foo ####################################

 

Vous ne vous en apercevrez pas, mais RPM supprime automatiquement les anciennes versions du package foo. Vous pouvez toujours utiliser l’option -U pour installer les packages,

puisqu’elle fonctionne même si le système ne possède pas d’ancienne version du package.

RPM effectue une mise àjour intelligente du package avec une sauvegarde des fichiers de configuration, vous verrez apparaître un message du type :

 

 

 

saving /etc/foo.conf as /etc/foo.conf.rpmsave

Cela signifie que les modifications que vous avez apportées au fichier de configuration risquent de ne plus être compatibles avec le nouveau fichier de configuration du package, RPM effectue donc une sauvegarde du fichier d’origine et installe le nouveau. Observez les différences entre les deux fichiers, afin que le système puisse continuer àfonctionner correctement.

Une mise àjour combine en fait les fonctions d’installation et de suppression de package, vous pouvez donc rencontrer une des erreurs décrites plus haut, plus une. Si RPM pense que vous êtes en train d’effectuer une mise àjour vers une version plus ancienne, vous verrez apparaître :

rpm -Uvh foo-1.0-1.i386.rpm

 

foo package foo-2.0-1 (which is newer) is already
installed error : foo-1.0-1.i386.rpm cannot be installed

 

 

Pour ignorer cette erreur et donc pour forcer la mise àjour, utilisez l’option —oldpackage.

rpm -Uvh —oldpackage foo-1.0-1.i386.rpm

 

foo ####################################

 

 

VI. Interrogation

 

Pour interroger la base de données sur les packages installés, utilisez la commande rpm -q. Utilisez simplement rpm -q foo pour afficher le nom, la version et le numéro de mise àjour du package foo :

rpm -q foo

 

rpm-2.0-1

 

Vous pouvez remplacer le nom du package par une des ces options (Package Specification Options) :

-a interroge tous les packages installés

-f <file> interroge tous les packages qui contiennent le fichier <file>

-p <packagefile> interroge le package <packagefile>

 

Il existe plusieurs façons de spécifier les informations àafficher lors de l’interrogation des packages. Vous pouvez utiliser les options suivantes (Information Selection Options) :

-i affiche un certain nombre d’informations sur le package (nom, description, numéro de mise àjour, taille, date de création, date d’installation, fournisseur, ...)

-l affiche la liste de fichiers contenus dans le package

-s affiche l’état de tous les fichiers du package (état : normal ou absent)

-d affiche une liste des fichiers de documentation (pages du man, pages info, README, ...)

-c affiche une liste des fichiers de configuration. Ces fichiers sont ceux que vous modifierez après l’installation pour les adapter àvotre système (sendmail.cf, passwd, inittab, ...)

Pour les options qui affichent une liste de fichiers, vous pouvez ajouter -v pour un affichage avec un format similaire àcelui de la commande ls -l.

 

VII. Vérification

 

La vérification permet de comparer des informations relatives aux fichiers installés sur le système avec celles du package d’origine. Entre autres, la vérification se fait sur la taille, sur la somme MD5, sur les permissions, sur le type, sur le propriétaire et sur le groupe de chaque fichier.

rpm -V vérifie un package. Vous pouvez aussi combiner d’autres options décrites plus haut (Package Selection Options). La commande rpm -V foo vérifie que tous les fichiers du package foo sont tels qu’ils étaient lors de l’installation d’origine.

Exemples :

Pour vérifier qu’un package contient un fichier particulier :

rpm -Vf /bin/vi

Pour vérifier tous les packages installés :

rpm -Va

Pour vérifier un package installé par rapport au package RPM :

rpm -Vp foo-1.0-1.i386.rpm

Ceci peut être utile si vous pensez que votre base de données est corrompue.

Si la vérification s’est correctement déroulée, vous ne verrez rien apparaître. Si la vérification met àjour des différences, une chaîne de huit caractères apparaît. Le caractère c suivi du nom du fichier indique qu’il s’agit d’un fichier de configuration. Chacun des huit caractères représente une comparaison, si un point (.) apparaît cela signifie que la comparaison n’a pas échoué.

Voici les caractères utilisés lorsque la comparaison a échoué :

5 Somme MD5
S Taille du fichier
L Lien symbolique
T Date de modification du fichier
D Périphérique
U Utilisateur
G Groupe
M Mode (permissions et type de fichier)

Suivant le résultat, c’est àvous de déterminer la marche àsuivre (supprimer le package, le réinstaller, corriger le problème, ...).

VIII. Information supplémentaire sur RPM

 

RPM est un utilitaire très utile pour maintenir le système, ainsi que pour détecter et corriger des problèmes. Voici quelques exemples, pour une meilleur compréhension :

Vous avez effacé par accident des fichiers, mais vous ne savez pas lesquels. Si vous voulez vérifier l’intégralité du système et voir ce qui y manque, tapez :

rpm -Va

Si des fichiers sont absents ou corrompus, vous devrez probablement réinstaller le package (ou le supprimer puis le réinstaller).

Vous rencontrez un fichier, mais vous ne savez pas àquel package il appartient. Pour le savoir, utilisez la commande :

rpm -qf /usr/X11R6/bin/xjewel

 Le résultat de la commande sera : xjewel-1.6-1

Les deux exemples précédents peuvent être combinés. Considérons que vous avez des problèmes avec /usr/bin/paste. Vous voulez vérifier le package qui possède ce programme, mais vous ne savez pas quel est ce package. Utilisez la commande suivante pour effectuer la vérification de ce package :

rpm -Vf /usr/bin/paste

Si vous utilisez un programme pour lequel vous souhaitez obtenir plus d’informations, exécutez la commande suivante pour savoir quels sont les fichiers de documentations associés :

rpm -qdf /usr/bin/ispell

Le résultat de la commande sera :

/usr/man/man4/ispell.4
/usr/man/man4/english.4
/usr/man/man1/unsq.1
/usr/man/man1/tryaffix.1
/usr/man/man1/sq.1
/usr/man/man1/munchlist.1
/usr/man/man1/ispell.1
/usr/man/man1/findaffix.1
/usr/man/man1/buildhash.1
/usr/info/ispell.info.gz
/usr/doc/ispell-3.1.18-1/README

Vous avez trouvé un nouveau package RPM, mais vous ne savez pas àquoi il correspond.
Pour obtenir des informations utilisez la commande :

 rpm -qip koules-1.2-2.i386.rpm

Le résultat de la commande sera :

 

Name : koules

 

 

 
Distribution : Red Hat Linux Colgate

Version : 1.2

Vendor : Red Hat Software
 
Release : 2

Build Date : Mon Sep 02 11 :59 :12 1996

Install date : (none)

Build Host : porky.redhat.com
 
Group : Games
 
Source RPM : koules-1.2-2.src.rpm
 
Size : 614939
 
Summary : SVGAlib action game ; multiplayer, network, sound
 

 

    • Description :
      This arcade-style game is novel in conception and excellent in execution.
      No shooting, no blood, no guts, no gore. The play is simple, but you still must develop skill to play.
      This version uses SVGAlib to run on graphics console.
    • Description :
      This arcade-style game is novel in conception and excellent in execution.
      No shooting, no blood, no guts, no gore. The play is simple, but you still must develop skill to play.
      This version uses SVGAlib to run on graphics console.
  • Vous voulez maintenant connaître les fichiers installés par ce package. Utilisez la commande suivante :

    rpm -qlp koules-1.2-2.i386.rpm

    Le résultat de la commande sera :

    /usr/man/man6/koules.6
    /usr/lib/games/kouleslib/start.raw
    /usr/lib/games/kouleslib/end.raw
    /usr/lib/games/kouleslib/destroy2.raw
    /usr/lib/games/kouleslib/destroy1.raw
    /usr/lib/games/kouleslib/creator2.raw
    /usr/lib/games/kouleslib/creator1.raw
    /usr/lib/games/kouleslib/colize.raw
    ...
    /usr/lib/games/kouleslib
    /usr/games/koules

    Ce ne sont que des exemples, vous trouverez bien d’autres applications de RPM sur votre propre système.

     

     

    En cas d’erreur :

    Si la commande : rpm -xxxx ou yum xxx donne cela :


    erreur : erreur db5(11) de dbenv->open : Ressource temporairement non disponible
    erreur : ne peut ouvrir l’index Packages en utilisant db5 - Ressource temporairement non disponible (11)
    erreur : impossible d’ouvrir la base de données paquet dans /var/lib/rpm
    erreur : erreur db5(11) de dbenv->open : Ressource temporairement non disponible
    erreur : impossible d’ouvrir la base de données paquet dans /var/lib/rpm
     

    Faire pour connencé la commande ci-dessous :

    #/var/lib/rpm# rpm —rebuilddb
     


    Commentaires  Forum fermé

    Navigation

    Articles de la rubrique

    • Gestion RPM

    Statistiques

    Dernière mise à jour

    mercredi 4 octobre 2023

    Publication

    273 Articles
    Aucun album photo
    Aucune brève
    6 Sites Web
    2 Auteurs

    Visites

    120 aujourd’hui
    250 hier
    850264 depuis le début
    8 visiteurs actuellement connectés