introduction a rpm
Ce document est sous licence LGPL voir le site www.gnu.org pour plus de
renseignements
Vous pouvez redistribuer et modifier ce document selon les termes de la License
Publique Generale GNU (LGPL) version 2 ou toute autre version ultérieure
objectif
niveau : débutant
contenu :
- utilisation de la commande rpm
- présentation de quelques outils complémentaires de rpm (gestion des dépendance, des mises a jour)
sommaire
- intérêt des packages
- généralité sur rpm
- documentation
- installation de package
- mise a jour
- suppression de package
- sécurité
- interrogation
- programmation
- dépendance
- les outils graphiques
- outils complémentaires simples
- outils complémentaires "évolués"
- en cas de problème
les packages sont faits pour faciliter la vie des administrateurs dans l'administration des logiciels :
- installation
- mise a jour
- désinstallation
- gestion des conflits
- gestion des dépendances
- gestion de la sécurité
rappel : il y a deux grands gestionnaires de packages sous linux :
- rpm : choisi comme standard par le Linux Standard Base
adopte par la plupart des distributions commerciales (Redhat, Suse, Mandrake ...)
- deb : Debian, avec plusieurs outils (dpkg, apt, dselect, aptitude)
informations
un fichier rpm = tar.gz + informations
après installation :
- tar.gz -> fichiers disques
- informations -> base de données rpm
la convention de nommage des packages rpm est la suivante : nom-version-release.architecture.rpm
- nom : représente le nom du package, et est en général le nom du logiciel
celui-ci peut aussi être décomposé en plusieurs packages. on trouve couramment :
- nom-devel : package de "développement" (include C, bibliothèques) pour permettre la compilation de logiciels
- libnom : les bibliothèques du logiciel sont séparées du package principal
- nom-common : partie du logiciel utilisable pour un serveur ou un client
- nom-server : partie du logiciel pour un serveur
- nom-client : partie du logiciel pour un client
- version : telle qu'elle est définie par le ou les développeurs du logiciel
- release : elle est définie par celui qui fabrique le package
- l'architecture représente la catégorie de processeur sur laquelle peut être installée le package :
- ppc : powerpc (mac)
- sparc : stations sun
- alpha : pc avec processeurs alpha
- ...
- i* : processeurs Intel :
- i386 : la base commune (80386)
- i486 : ?
- i566 : pentium
- i686 : pentium II, III, IV
tous ces packages contiennent des programmes compilés, donc non portables :
- ils ne sont donc pas portables entre les différents processeurs(Intel, powerpc, sparc)
- ils dépendent également des librairies utilisées lors de la compilation, et sont donc souvent non portables entre distributions différentes, voire sur la même distribution, entre versions différentes
remarque : a priori, le nom de la distribution et la version n'apparaissent pas dans le nom du package (sauf Mandrake, qui finit ses releases par la chaîne "mdk")
il y aussi 2 types d'architecture portable :
- noarch : ces packages contiennent des fichiers de configuration, ou des programmes en langage interprétés (shell, perl, python ...), et peuvent donc être installes partout
- src : ces "pseudo-packages" contiennent les programmes sources, avec ce qu'il faut pour les recompiler (Makefile, configure) et fabriquer un package
- rpm --help
- man rpm (pas toujours a jour)
- maximum rpm : LA référence, quoique un peu obsolète
ps : dans cette documentation, je ne présente qu'une partie des options, se référer au man pour une liste complète
commandes
- rpm -i/--install : installe sans remplacer une version précédente
options
- -vh : pour voir la progression de l'installation
- --test : teste juste les conflits potentiels
utilisation
très peu utilisé, sauf pour l'installation d'un nouveau noyau, sans supprimer l'ancien
commandes
- rpm -U/--upgrade : installe ou remplace un package
- rpm -F/--freshen : installe (et remplace) un package seulement si une version était déjà installée
attention
il y a des sécurités :
- conflits de fichiers : un fichier ne peut appartenir a plusieurs packages
- gestion des versions : on ne peut mettre a jour qu'avec une version >= a l'ancienne
les fichiers de configuration ne sont pas écrases : ils sont renommés soit en .rpmsave, soit en .rpmnew
options
les mêmes que pour l'installation avec en plus :
- --oldpackage : force un retour arrière sur la version
- --replacepkgs : force une réinstallation
- --relocate : permet de "reloger" des fichiers, c'est-à-dire les installer a un autre emplacement que celui prévu par le packager. Ne marche pas avec tous les packages, ni avec toutes les versions de rpm.
options fortement déconseillées, sinon risque de se trouver avec un système instable a court terme !
- --nodeps : ne pas tenir compte des dependances
- --force : forcer l'installation
commande
rpm -e/--uninstall
attention
il y a des sécurités : on ne peut supprimer un package si d'autres en dépendent (normal!)
souvent négligées, mais a mon avis très importantes
commandes
- rpm -K/--checksig : à faire avant toute installation, permet de vérifier la signature du package, et donc que le package n'a pas été corrompu par un pirate
- rpm -V/--verify : a faire pour voir si quelqu'un/quelque chose n'a pas modifié des fichiers du package (taille, droits, checksum ...)
attention
- pour utiliser rpm -K, il faut avoir "importé" la clef publique du packager dans la base de l'usager courant (gpg --import RPM-GPG-KEY pour la distribution).
- en cas de problème du type "mon logiciel x ne marche plus", rpm -V permet de contrôler ce qui a changé depuis l'installation
commande
rpm -q/--query
utilisations simples
- rpm -q package : renvoie $nom-$version-$release
- rpm -qi package : affiche une page d'information sur le package
- rpm -ql package : affiche la liste des fichiers du package
- rpm -qf fichier : affiche le package propriétaire du fichier
- rpm -q --requires package : affiche les dépendance du package
- rpm -q --provides package : affiche ce que fournit le package
- rpm -q --whatrequires capacite : affiche les packages qui ont besoin de "capacite"
- rpm -q --whatprovides capacite : affiche le package qui fournit "capacite"
- rpm -q --changelog package : affiche l'historique des modifications du package
- rpm -qa : renvoie la liste de tous les packages installés. utilise souvent avec un grep : rpm -qa | grep -i rpm
- rpm -qp fichier_rpm : interroge un fichier plutôt que la base, par exemple pour connaître ses dépendances : rpm -qpR fichier_rpm
rem : pour un les interrogations plus complexes, voir le paragraphe suivant : programmation
shell-script
toutes les commandes d'interrogation sont en fait des macros, pour simplifier les requêtes courantes.
en fait chaque package est décrit par un ensemble d'attributs (117) dans la base de données rpm, qui peuvent être interrogés séparément
exemples
- récupérer la liste ordonnée par taille des packages installés :
rpm -qa --queryformat "%{SIZE} %{NAME} %{VERSION}\n" | sort -n
- recuperer la liste ordonnée par date des packages installés :
rpm -qa --queryformat "%{INSTALLTIME:date} %{NAME} %{VERSION}\n" | sort -n
autres langages
il y a une API C, et des modules perl et python
- on peut résoudre les dépendances multiples en passant la liste des rpm en ligne de commande: rpm -Fvh mozilla*.rpm
- les dépendances, les conflits sont gérés par rapport a la base de données rpm : une installation en tar.gz ne sera pas
"reconnue" par rpm (solution transformer le tar.gz en rpm).
- rpm est un outil de "bas niveau", comparable a dpkg de Debian : pour gérer les dépendances en chaînes, il faut un logiciel de niveau supérieur
- astuce : pour sortir la liste des packages dont les dépendances sont cassées : rpm -Va --nofiles
il y en a beaucoup :
- kpackage (kde)
- gnorpm (gnome)
- xrpm
- purp (curses)
Personnellement, je trouve qu'ils n'apportent rien a l'utilisation de rpm (a part une certaine lenteur, et des bugs)
Le logiciel rpmorphan liste les packages rpm qui n'ont plus de dépendances avec les autres paquets installés sur votre système.
C'est un clone du logiciel deborphan pour debian.
Il peut vous aider pour supprimer les packages inutilisés, par exemple :
- après une montée de version système
- lors de la suppression de logiciels après des tests
Rpmrestore est un outil permettant de visualiser les différences (propriétaire, groupe, permissions, date de modification, taille) entre un package tel qu'il a été installé et tel qu'il est (c'est pour cela une version améliorée de rpm -V).
Il permet aussi de restaurer ces attributs dans leur état original (d'installation).
deux utilisations :
- gérer le miroir local d'une distribution (intéressant pour un site ayant beaucoup de machine)
- mettre a jour une machine depuis un miroir ftp
fonctions
- gestion basique des dépendances, sans base de données
- travaille par ftp
- sait gérer une liste de miroirs (pools)
- gestion des signatures
- très nombreuses options
mon avis
Ce logiciel ne fait plus le poids par rapport aux outils fournis maintenant par les distributions : urpmi, yum ...
logiciel semblable a autorpm pour la mise a jour ftp (un peu moins de possibilités)
mon avis
Ce logiciel ne fait plus le poids par rapport aux outils fournis maintenant par les distributions : urpmi, yum ...
pour gestion correcte des dépendances, il faut une base de données sur le serveur
urpmi
c'est l'outil fait par Mandrake (en perl).
- pas très portable
- évolution rapide sans compatibilité ascendante (Mandrake 8.2 vers 9.0)
a réserver aux usagers Mandrake (installé par défaut)
red-carpet
outil propose par ximian
- les dépendances semblent bien gérées
- utilisation facile (interface graphique)
- configuration un peu (trop a mon goût) "boite noire"
un bon choix pour les débutants (Redhat, Mandrake)
un produit en python, semblable a apt, mais volontairement plus léger
- trafic réseau très léger
- interface console
- serveur facile a configurer
un bon choix pour un administrateur confirme, (avec peut-être une difficulté a trouver des serveurs)
apt
portage de l'outil Debian sur une base rpm (par la distribution Connectiva).
On peut trouver des packages sur les sites :
les points forts :
- très complet
- très stable
- interface graphique : synpatic en gtk
le choix le plus complet pour un administrateur confirme
documentation
linux magazine 37
il arrive que la base rpm se corrompe, ce qui bloque toute installation ou interrogation.
voici quelques recettes pour résoudre le problème.
et une solution plus violente.
version du 2007/02/22
Eric Gerbier
documentation sous licence GNU Free Documentation License