RPM depuis l'invite du shell

Vous pouvez également utiliser la technologie RPM en entrant une série de commandes à l'invite du shell. Vous avez naturellement à votre disposition toutes les fonctions de Gnome-RPM, plus quelques-unes, telles que la possibilité d'actualiser des paquetages, comparable à la mise à niveau (reportez-vous à la la section intitulée Actualisation pour plus d'informations).

Pour plus de détails sur RPM, reportez-vous aux chapitres correspondants dans le Guide officiel de référence Red Hat Linux figurant sur le CD-ROM de documentation. Vous pouvez également lire la page de manuel correspondante en tapant man rpm ou le fichier d'aide en tapant rpm --help.

Installation

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. L'installation d'un paquetage revient à entrer :

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

RPM imprime le nom du paquetage (qui n'est pas nécessairement le même que celui du fichier), puis une succession de symboles dièse à mesure que le paquetage est installé, indiquant l'état d'avancement de l'installation.

En réalité, vous pouvez également installer un paquetage avec l'option de mise à jour. Pour plus de détails, voir la la section intitulée Mise à jour.

Lors de l'installation, des erreurs peuvent se produire ; le système affiche alors des messages indiquant que le paquetage est déjà installé ou qu'il y a des problèmes de dépendance empêchant l'installation du paquetage.

Pour plus de détails sur les types d'erreurs éventuels, poursuivez la lecture.

Paquetage déjà installé

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 envisagez d'installer le paquetage malgré tout, vous pouvez utiliser la commande --replacepkgs dans la ligne de commande, qui indique à RPM d'ignorer l'erreur :

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

Conflits de fichiers

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                       ####################################
#
	      

Dépendance non résolue

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 corriger l'erreur, installez le paquetage requis. 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.

Désinstallation

La désinstallation d'un paquetage est également simple :

# rpm -e foo
#
	    

Notez que, lorsque vous désinstallez un paquetage, vous devez utiliser le nom du paquetage (foo), pas celui du paquetage original ("foo-1.0-1.i386.rpm").

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 que RPM ignore cette erreur et désinstalle le paquetage malgré tout (ce qui est également une mauvaise idée du fait que le paquetage qui en dépend cessera probablement de fonctionner correctement), utilisez la commande --nodeps dans la ligne de commande.

Mise à jour

La mise à jour d'un paquetage est une opération similaire à l'installation.

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

Lorsque vous procédez à une mise à jour, RPM désinstalle automatiquement les anciennes versions du paquetage foo.

Vous pouvez également utiliser la commande upgrade pour installer des paquetages car 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 :

Erreurs lors de l'installation de paquetages plus anciens

# 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 que RPM "se mette à niveau" malgré tout, utilisez --oldpackage dans la ligne de commande :

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

Actualisation

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 version plus récente d'un paquetage déjà installé est traitée par l'option d'actualisation de RPM, la mise à niveau vers la version plus récente intervient. Toutefois, l'option d'actualisation de RPM n'installe pas un paquetage s'il n'existe pas de paquetage du même nom installé précédemment. Ceci diffère de l'option de mise à jour de RPM, vu que la mise à jour installera effectivement les paquetages, qu'une version antérieure soit installée ou non.

Recherche

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 quel(s) paquetage(s) vous voulez rechercher. On les appelle options de spécification de 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.

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.

Vérification

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 :

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 entre un attribut du fichier et 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 :

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.