Red Hat Linux 7.0: The Guide officiel de référence Red Hat Linux | ||
---|---|---|
Précédent | Chapitre 5. Gestion de paquetages avec RPM | Suivant |
RPM offre cinq modes de fonctionnement de base (sans compter la construction du paquetage) : installation, désinstallation, mise à jour, interrogation et vérification. Cette section contient un aperçu de chaque mode. Pour obtenir des détails et options complets, essayez rpm --help, ou consultez la la section intitulée Autres ressources de RPM pour plus d'informations sur RPM.
Les paquetages RPM portent généralement des noms de fichier tels que foo-1.0-1.i386.rpm, c'est-à-dire le nom (foo), la version (1.0 ), l'édition (1) et l'architecture (i386) du paquetage. Installer un paquetage, c'est aussi simple que :
# rpm -ivh foo-1.0-1.i386.rpm foo #################################### # |
Comme vous pouvez le voir, RPM imprime le nom du paquetage (qui ne correspond pas nécessairement à celui du fichier qui aurait pu être 1.rpm), puis imprime une série de symboles dièse, à mesure que le paquetage est installé, afin de montrer l'état d'avancement de l'opération.
Remarque | |
---|---|
Bien que l'utilisation de la commande rpm -ivh foo-1.0-1.i386.rpm pour l'installation de paquetages soit fréquente, vous pouvez envisager d'utiliser rpm -Uvh foo-1.0-1.i386.rpm à la place. La commande -U est généralement utilisée pour mettre à jour des paquetages, mais elle permet également d'en installer de nouveaux. Reportez-vous à la la section intitulée Mise à jour pour plus d'informations sur l'utilisation de la commande -U de RPM. |
L'installation des paquetages est conçue dans un souci de simplicité mais elle peut générer des erreurs :
Si le paquetage est déjà installé, le système affiche :
# 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 réellement installer le paquetage malgré tout, vous pouvez entrer --replacepkgs dans la ligne de commande, pour indiquer à RPM d'ignorer l'erreur :
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm foo #################################### # |
Si vous tentez d'installer un paquetage contenant un fichier déjà installé par un autre paquetage, le système affiche :
# 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 faire en sorte que RPM ignore cette erreur, utilisez la commande --replacefiles dans la ligne de commande :
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm foo #################################### # |
Les paquetages RPM peuvent "dépendre" d'autres paquetages, ce qui signifie qu'ils requièrent l'installation d'autres paquetages pour fonctionner correctement. Si vous essayez d'installer un paquetage pour lequel il existe une telle dépendance non résolue, vous verrez s'afficher :
# rpm -ivh bar-1.0-1.i386.rpm failed dependencies: foo is needed by bar-1.0-1 # |
Pour résoudre cette erreur, installez les paquetages demandés. Si vous voulez néanmoins forcer l'installation (ce qui est une mauvaise idée car le paquetage ne fonctionnera probablement pas correctement), entrez --nodeps dans la ligne de commande.
La désinstallation d'un paquetage est aussi simple que son installation :
# rpm -e foo # |
Remarque | |
---|---|
Nous avons utilisé le nom de paquetage "foo", pas le nom du fichier de paquetage d'origine "foo-1.0-1.i386.rpm". Pour désinstaller un paquetage, remplacez foo par le nom de fichier du paquetage d'origine. |
Une erreur de dépendance peut se produire lors de la désinstallation d'un paquetage si un autre paquetage installé dépend de celui que vous essayez de supprimer. Par exemple :
# rpm -e foo removing these packages would break dependencies: foo is needed by bar-1.0-1 # |
Pour faire en sorte que RPM ignore cette erreur et désinstalle le paquetage malgré tout (ce qui est une mauvaise idée étant donné que le paquetage qui en dépend cessera probablement de fonctionner correctement), entrez --nodeps dans la ligne de commande.
La mise à jour d'un paquetage est une opération similaire à l'installation.
# rpm -Uvh foo-2.0-1.i386.rpm foo #################################### # |
Le message ci-dessus indique que RPM a automatiquement désinstallé toutes les versions plus anciennes du paquetage foo. Il se peut que vous vouliez toujours utiliser la commande -U pour installer des paquetages, du fait qu'elle fonctionne bien, même lorsqu'aucune version antérieure du paquetage n'est installée.
Comme RPM effectue une mise à jour "intelligente" des paquetages à l'aide de fichiers de configuration, le message suivant peut apparaître :
enregistrement de /etc/foo.conf as /etc/foo.conf.rpmsave |
Ceci signifie que les modifications apportées au fichier de configuration risquent de ne pas être compatibles avec le nouveau fichier de configuration du paquetage, de sorte que RPM a enregistré votre fichier d'origine et en a installé un nouveau. Vous devez étudier et résoudre les différences entre les deux fichiers le plus rapidement possible pour veiller à ce que le système continue à fonctionner correctement.
Une mise à jour étant une combinaison d'opérations d'installation et de désinstallation, vous risquez de rencontrer des erreurs résultant de ces modes, plus une erreur supplémentaire : si RPM considère que vous tentez d'effectuer une mise à niveau vers un paquetage portant un numéro de version plus ancien, le système affiche le message suivant :
# 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 faire en sorte que RPM effectue malgré tout la mise à niveau, utilisez --oldpackage dans la ligne de commande :
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm foo #################################### # |
L'actualisation d'un paquetage est une opération similaire à une mise à jour :
# rpm -Fvh foo-1.2-1.i386.rpm foo #################################### # |
L'option d'actualisation de RPM vérifie les versions de paquetages spécifiées dans la ligne de commande par rapport aux versions installées sur le système. Lorsqu'une nouvelle version d'un paquetage installé est traitée par l'option d'actualisation de RPM, elle est mise à jour. Toutefois, l'option d'actualisation n'installe pas un paquetage s'il n'existe pas de paquetage du même nom installé précédemment. Cette procédure diffère de celle mise en oeuvre si vous utilisez l'option de mise à jour de RPM, étant donné qu'une mise à jour installe effectivement les paquetages, qu'une version plus ancienne ait été installée ou non.
L'option d'actualisation de RPM fonctionne bien avec des paquetages uniques ou un groupe de paquetages. Elle est particulièrement pratique si vous venez de télécharger un grand nombre de paquetages différents et voulez uniquement mettre à niveau ceux qui sont déjà installés sur le système. L'option d'actualisation vous évite de devoir opérer une sélection parmi les paquetages téléchargés, en supprimant les éléments non souhaités avant de les utiliser.
Dans ce cas, vous entrez simplement la commande suivante :
# rpm -Fvh *.rpm |
RPM met automatiquement à jour les paquetages déjà installés.
L'interrogation de la base de données des paquetages installés s'effectue à l'aide de la commande rpm -q. Une utilisation simple est rpm -q foo qui imprime le nom, la version et l'édition du paquetage installé foo :
# rpm -q foo foo-2.0-1 # |
Au lieu de spécifier le nom du paquetage, vous pouvez utiliser les options suivantes avec -q pour spécifier le(s) paquetage(s) que vous voulez interroger. On les appelle options de spécification de paquetage.
-a recherche tous les paquetages actuellement installés.
-f fichier interroge le paquetage contenant fichier.
-p paquetage interroge le paquetage paquetage.
Il y a plusieurs manières de spécifier les informations à afficher sur les paquetages recherchés. Les options suivantes sont utilisées pour sélectionner le type d'informations recherché. On les appelle options de sélection d'informations.
-i affiche des informations sur le paquetage : nom, description, version, taille, date de compilation, date d'installation, éditeur, etc.
-l affiche la liste des fichiers contenus dans le paquetage.
-s affiche l'état de tous les fichiers du paquetage.
-d affiche la liste des fichiers de documentation (pages de manuel, pages d'information, fichiers README, etc.).
-c affiche la liste des fichiers de configuration. Il s'agit des fichiers que vous modifiez après l'installation afin d'adapter le paquetage à votre système ( sendmail.cf, passwd, inittab, etc).
Pour les options qui affichent des listes de fichiers, vous pouvez ajouter -v à la ligne de commande pour obtenir les listes dans un format ls -l familier.
La vérification d'un paquetage permet de comparer les informations sur les fichiers d'un paquetage installé à celles du paquetage original. La vérification compare, entre autres, la taille, la somme MD5, les autorisations, le type, le propriétaire et le groupe de chaque fichier.
La commande rpm -V vérifie un paquetage. Vous pouvez utiliser n'importe laquelle des options de sélection de paquetage de la liste pour spécifier les paquetages que vous souhaitez vérifier. Une utilisation simple est rpm -V foo qui vérifie si tous les fichiers du paquetage foo sont tels qu'ils étaient lors de leur installation initiale. Par exemple :
Pour vérifier un paquetage contenant un fichier particulier :
rpm -Vf /bin/vi |
Pour vérifier TOUS les paquetages installés :
rpm -Va |
Pour comparer un paquetage installé à un fichier de paquetage de RPM :
rpm -Vp foo-1.0-1.i386.rpm |
Si la vérification est correcte, elle ne fournit aucun résultat. S'il y a des discordances, elles sont affichées. Le format du résultat est une chaîne de 8 caractères, éventuellement associée à la lettre "c" indiquant un fichier de configuration, puis au nom de fichier. Chacun des 8 caractères indique le résultat d'une comparaison d'un attribut du fichier à la valeur de cet attribut enregistrée dans la base de données RPM. Un simple "." (point) signifie que le test a réussi. Les caractères suivants indiquent l'échec de certains tests :
5 -- Somme de contrôle MD5
S -- Taille de fichier
L -- Lien symbolique
T -- Temps de modification de fichier
D -- Périphérique
U -- Utilisateur
G -- Groupe
M -- Mode (inclut des permissions et un type de fichier)
? -- Fichier illisible
Si vous voyez un résultat affiché, essayez de déterminer s'il est préférable de supprimer ou de réinstaller le paquetage, ou de résoudre le problème autrement.
Précédent | Sommaire | Suivant |
Gestion de paquetages avec RPM | Niveau supérieur | Comment impressionner ses amis avec RPM |