|
Chapitre Suivant , Précédent , Début du manuel , Table des matières générale |
Chapitre 7
Gestion des packages avec RPM
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'£il à RPM et à l'utiliser dans leurs propres produits. RPM est distribuable sous les termes de la licence GPL.RPM permet à utilisateur de maintenir facilement son système : l'installation, la suppression, et la maintenance de package s'effectue à l'aide d'une simple ligne de commande. RPM maintient une base de données sur les packages installés et sur leurs fichiers, ce qui vous permet d'interroger et de vérifier votre système. Durant les mises à jours, RPM conserve vos fichiers de configuration ce qui est impossible avec des fichiers .tar.gz.
RPM permet aux développeurs de créer facilement des packages sources et binaires, qu'ils pourront distribuer auprès des autres utilisateurs. Le procédé utilisé est d'une grande simplicité et se déroule grâce à un seul fichier accompagné ou non de fichiers patches. De plus, il pourront facilement passer vers de nouvelles versions de packages.
Actuellement, un ouvrage est en cours de réalisation sur RPM. Pour plus de renseignements contactez Red Hat Software ou consultez la serveur http://www.redhat.com.
7 1 Objectifs de RPM
Avant de savoir utilisez RPM, il est préférable de savoir à quoi il peut servir.Mise à jour : vous pouvez avec RPM effectuer une mise à jour du système sans avoir à tout réinstaller. Lorsque vous avez à votre disposition une nouvelle version du système basée sur RPM (telle que Red Hat Linux), vous n'aurez pas besoin de réinstaller l'intégralité de celui-ci. RPM permet une mise à jour automatisée et intelligente du système. Vos fichiers de configuration seront conservés lors de la procédure de mise à jour.
Interrogation : RPM permet d'effectuer des interrogations sur les packages ou sur les fichiers. Vous pouvez ainsi savoir facilement à quel package appartient tel ou tel fichier. Vous pouvez aussi interroger les packages de façon individuelle pour en connaître le contenu.
Vérification du système : grâce à RPM vous pouvez facilement vérifier les 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. Vous pouvez alors réinstaller le package, sans que vos fichiers de configuration soient supprimés.
Sources vierges : un des objectifs est de permettre l'utilisation des sources vierges, tels qu'ils sont distribués par les auteurs de logiciels. Avec RPM, vous aurez à votre disposition les sources, les patches et les instructions nécessaires à la compilation. Ceci est un grand avantage, et pour plusieurs raisons. Par exemple, vous pouvez facilement évoluer vers une nouvelle version de package grâce aux patches et aux instructions fournies. Ceci est très important pour les développeurs, mais est aussi d'une grande utilité pour les utilisateurs normaux. Nous tenons à remercier les gens de la distribution BOGUS qui sont à l'origine de ce concept.
7 2 Utilisation de RPM
RPM possède cinq fonctionnalités différentes (sans compter la réalisation de package) : installation, suppression, mise à jour, interrogation et vérification. Voici une présentation de ces cinq fonctionnalités. Pour plus d'information et pour une description des options, utilisez la commande rpm -help ou consultez les pages du man (ainsi que l'ouvrage consacré à RPM).7 2.1 Installation
foo-1.0-1.i386.rpm est un exemple de fichier RPM : (foo) est le nom du package, (1.0) la version, (1) le numéro de release, et (i386) l'architecture. Pour installer un package, utilisez la commande :$ rpm -ivh foo-1.0-1.i386.rpm foo ####################################
Comme vous pouvez le constater, RPM affiche le nom du package (qui n'est pas forcément le nom du fichier RPM) et une succession de caractères # qui représente une jauge de progression.
L'installation de packge est très simple, mais vous pouvez tout de même rencontrer des problèmes :
Package déjà installé
Si le package est déjà installé, vous verrez :
$ 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.
Fichiers en conflit SI vous tentez d'installer un package qui contient un fichier déjà installé sur le système, vous verrez :
$ 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.
Dépendances Des packages RPM peuvent dépendre d'autres packages, ce qui signifie qu'ils doivent au préalable être installés. Lors d'une installation, vous pouvez être confrontés à des dépendances entres les packages, vous verrez :
$ 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 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.
7 2.2 Suppression
La suppression d'un package est aussi simple que installation :$ rpm -e foo
Note : nous utilisons ici le nom foo, qui n'est pas le nom original du package (foo-1.0-1.i386.rpm).
Lors de la suppression d'un package, vous pouvez rencontrer des problèmes de dépendances. Vous verrez :
$ 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 le package risque fort de ne pas fonctionner) en utilisant l'option -nodeps.
7 2.3 Mise à jour
La mise à jour d'un package est aussi simple que installation :$ rpm -Uvh foo-2.0-1.i386.rpm foo ####################################
RPM supprime automatiquement les anciennes versions du package foo. Il est conseillé d'utiliser l'option -U pour installer les packages, car elle fonctionne même si le système ne possède pas d'ancienne version du package.
RPM effectue une mise à jour intelligente avec une sauvegarde des fichiers de configuration :
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Cela signifie que vos anciens fichiers de configuration risquent de ne plus être compatibles avec la nouvelle version du package, ils seront sauvegardés et RPM installera les nouveaux. Il est conseillé d'observer les différences entre les deux fichiers afin de vous assurez que votre système puisse fonctionner correctement.
La mise à jour combine en fait les opérations d'installation et de suppression de package, il se peut donc que vous rencontriez des erreurs. Si RPM pense que vous êtes en train d'effectuer une mise à jour vers une version plus ancienne, vous verrez :
$ 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, utilisez l'option -oldpackage.
7 2.4 Interrogation
Pour interroger la base de données sur les packages installés, utilisez la commande rpm -q. Utilisez rpm -q foo pour afficher le nom, la version et le numéro de release du package foo :$ rpm -q foo rpm-2.0-1
Au lieu d'indiquer le nom du package, vous pouvez utilisez les options suivantes :
Pour préciser les information à afficher, utilisez les options suivantes :
- -a interroge tous les packages installés
- -f
interroge tous les packages qui possèdent le fichier
- -F effectue la même fonction que -f mais utilise l'entrée standard pour le nom de fichier. exemple : find /usr/bin | rpm -qF
- -p
interroge le package
- -P effectue la même fonction que -p mais utilise l'entrée standard pour le nom de package. exemple : find /mnt/cdrom/RedHat/RPMS | rpm -qP)
Pour obtenir les listes de fichiers dans le même format qu'utilise la commande ls -l, utilisez l'option -v.
- -i affiche le nom, la description, le numéro de release, la date de création, la date d'installation du package...
- -l affiche la liste de fichiers contenus dans le package
- -s décrit l'état des fichiers du packages (normal ou absent)
- -d affiche la liste des fichiers de documentations (pages du man, pages info, REDAME, ...)
- -c affiche la liste des fichiers de configuration : (sendmail.cf, passwd, inittab, ...)
7 2.5 Vérification
La vérification permet de comparer les fichiers installés avec ceux du package d'origine. La comparaison 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 combiner la vérification avec d'autres options. La commande rpm -V foo vérifie que tous les fichiers de ce package sont identiques à ceux d'origine. Exemples :
Ceci peut être utile si vous pensez que votre base données est corrompue.
- Pour vérifier qu'un package contient un fichier :
rpm -Vf /bin/vi
- Pour vérifier tous les packages installés :
rpm -Va
- Pour vérifier un package installé :
rpm -Vp foo-1.0-1.i386.rpm
Si toutes les vérifications se sont passées correctement, aucun résultat n'apparaît. Par contre, si des différences sont rencontrées, un résultat apparaît. Le format du résultat est une chaîne de huit caractères, un c peut dénoter un fichier de configuration, suivie du nom du fichier. Chacun des caractères représente le résultat de la comparaison, si un point (.) apparaît cela signifie que la comparaison n'a pas échouée. Les caractères utilisés sont les suivants :
Si un résultat apparaît, c'est à vous de choisir quoi faire (supprimer le package, le réinstaller, corriger le problème, ...).
- 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)
7 3 Impressionner vos amis avec RPM
RPM est un utilitaire très utile pour maintenir le système, ainsi que pour détecter et corriger des problèmes. Le meilleur moyen de vous le faire comprendre, est de vous présenter des exemples.Ce ne sont que des exemples, vous trouverez bien d'autres applications de RPM sur votre propre système.
- 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 sera :
xjewel-1.6-1
- Les deux exemples précédents peuvent être combinés. Considérons que vous avez des problèmes avec le package /usr/bin/paste. Vous voulez vérifier le package qui possède ce programme mais vous ne savez pas lequel. Utilisez simpl ement la commande :
rpm -Vf /usr/bin/paste
et le package approprié sera vérifié.
- Si vous utilisez un programme, et que vous voulez savoir quels sont les fichiers de documentations associés utilisez la commande suivante :
rpm -qdf /usr/bin/ispell
Le résultat 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 informa- tions utilisez la commande :
rpm -qip koules-1.2-2.i386.rpm
Le résultat sera :
Name : koules Distribution: Red Hat Linux Colgate Version : 1.2 Vendor : Red Hat Software Release : 2 Build Date : Mon Sep 02 11 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... 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 :
rpm -qlp koules-1.2-2.i386.rpm
Le résultat 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
7 4 Autres ressources RPM
Pour plus d'informations sur RPM, consultez la page du man, l'écran d'aide (rpm -help), et les documents disponibles via :Un ouvrage consacré à RPM sera bientôt disponible (automne 1996). Vous trouverez des informations sur le site http://www.redhat.com, dès qu'il sera édité.
Il existe aussi une mailing liste consacrée à RPM : rpm- list@redhat.com (archivée sur http://www.redhat.com). Pour souscrire, envoyez un mail à rpm-list-request@redhat.com avec le mot suscribe comme sujet. rpm-list-request@redhat.com suscribe
Chapitre Suivant , Précédent , Début du document
Table des matières de ce chapitre, Table des matières générale
(c)1996 Pour l'adaptation française : "Logiciels du Soleil"