GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer/supprimer/interroger/mettre à jour les packages RPM sous Linux (aide-mémoire)

Maintenance du logiciel à l'aide de RPM (Red Hat Package Manager)

RPM est un puissant gestionnaire de logiciels qui peut être utilisé pour créer, installer, interroger, vérifier, mettre à jour et désinstaller des packages logiciels individuels. Un package RPM se compose d'une archive de fichiers et d'informations sur le package telles que le nom, la version, une description et des informations sur les dépendances d'autres packages RPM.

RPM est plus qu'un outil spécifique à Red Hat. De nombreuses autres distributions modernes, telles que Ubuntu et SuSE, utilisent également RPM. Les avantages de l'utilisation de RPM incluent :

  • Distribution, installation, mise à niveau et suppression de logiciels simplifiées
  • Garantit que :
    • le logiciel prérequis est installé sur le système.
    • les versions des logiciels prérequis restent compatibles.
    • les fichiers de configuration modifiés localement ne sont pas masqués lors de la mise à jour du RPM.
    • les fichiers de configuration modifiés localement sont enregistrés avec un suffixe ".rpmsave" si le package est supprimé ultérieurement.
  • Permet de certifier que le logiciel installé n'a pas été altéré, modifié, corrompu ou modifié de quelque manière que ce soit.

RPM conserve les informations sur les packages installés sous le dossier "/var/lib/rpm ” répertoire.

Les composants de l'outil RPM sont :

  • Une base de données personnalisée contenant des informations sur tous les logiciels installés sur le système, collectées à partir des RPM individuels.
  • Un exécutable "/bin/rpm".
  • Référentiels accessibles sur Internet des packages RPM disponibles.

Types de packages RPM

Les packages RPM se divisent en deux catégories :source et binaire .

Un RPM source peut toujours être reconnu car le nom du fichier se termine par la chaîne « .src.rpm “. Dans un RPM source se trouvent non seulement les fichiers de code source du programme d'origine, mais aussi des scripts qui permettent au code d'être recompilé automatiquement, d'être installé automatiquement et d'être supprimé automatiquement. Il n'y a pas de fichiers exécutables par l'utilisateur final dans un RPM source. Habituellement, seuls les développeurs sont intéressés par un RPM source.

Un RPM binaire contient les composants d'utilisateur final d'un RPM. Les noms de fichiers RPM binaires identifient l'architecture hôte pour le contenu. Par exemple, le fichier RPM binaire :

bash-3.1-16.1.x86_64.rpm

Il contient des fichiers utilisables uniquement sur un processeur d'architecture Intel X86 64 bits. D'autres valeurs d'architecture courantes incluent "i386" pour les hôtes Intel 32 bits. Certains RPM binaires peuvent être installés sur n'importe quelle architecture CPU car leurs fichiers fonctionneront sur n'importe quel hôte; un exemple de ces packages ".noarch.rpm" est le RPM "tzdata" qui contient des informations sur les fuseaux horaires mondiaux. Pour mettre à jour votre système avec la dernière version d'un paquet, vous aurez besoin du RPM binaire le plus récent.

Schéma de nommage RPM

Chaque package RPM est contenu dans un seul fichier. Le nom de fichier comporte plusieurs champs pour identifier pleinement le contenu du package. Bien que les outils RPM eux-mêmes ne reposent pas sur le nom de fichier lui-même, vous devez comprendre la convention de nom de fichier pour vous aider à identifier ou à télécharger le package approprié. Voici un exemple de nom de fichier RPM :

bash-3.1-16.1.x86_64.rpm

Ce RPM est pour le shell BASH ("/bin/bash"). Le nom du fichier est composé de plusieurs parties :

[name]-[version]-[release].[arch].rpm

où :

    [nom] est le nom du programme ou du package. Le [nom] est généralement attribué par l'auteur du programme. Dans notre exemple, les développeurs ont décidé de nommer leur produit "bash" pour des raisons qui leur semblaient amusantes.
  • version] identifie l'édition du logiciel contenue dans ce RPM. Le numéro de [version] est attribué par l'auteur du programme. L'utilisation du numéro permet de déterminer quelle version des sources de l'auteur a été utilisée pour générer le RPM.
  • [version] fournit le numéro d'édition du fichier RPM lui-même et non la version des fichiers source de l'auteur. Un RPM mis à jour peut être émis pour fournir une version corrigée du logiciel original de l'auteur. Il n'est pas nécessaire que le correctif provienne du développeur d'origine, donc la [version] RPM est incrémentée au lieu de la [version].
  • [arche] décrit le contenu du RPM et indique si ce fichier contient la source du produit (un ".src.rpm"), des fichiers indépendants de l'architecture (un ".noarch.rpm") ou des fichiers qui ne peuvent être installés que sur un hôte particulier type (un ".sh.rpm" ne fonctionnera que sur un processeur embarqué STRONGHOLD).
Remarque :La [version] est contrôlée par l'auteur original et la [version] est contrôlée par celui qui a construit le RPM.

Comprendre les versions RPM

Les champs RPM [version] et [release] ne sont pas toujours strictement numériques et peuvent contenir d'autres caractères que des chiffres ordinaires. Il est courant de voir à la fois une version « 10 » et une version « 10a » du même package. Parfois, choisir la version la plus récente peut être délicat. Voici comment RPM lui-même compare les numéros de version et de version en interne :

1. Supprimez le préfixe [name] et le suffixe « .[arch].rpm ». Par exemple :
"bash-3.1-16.1.x86_64.rpm" devient "3.1-16.1" et "bash-3.1-16.5a.1.x86_64.rpm" devient "3.1-16.5a.1"

2. Comparez les chaînes restantes caractère par caractère, de gauche à droite jusqu'à ce qu'un chiffre soit rencontré. Si les caractères diffèrent, le caractère qui vient en dernier dans la séquence d'assemblage est le RPM le plus récent.

3. Lorsqu'un chiffre est rencontré, convertissez toute la séquence de chiffres en un seul nombre binaire. Dans notre exemple, les deux caractères "16" sont combinés en une valeur de seize (16). Les valeurs binaires résultantes sont comparées et la plus grande valeur est le RPM le plus récent. Ainsi, un RPM avec une [version] de "0010" est plus récent qu'un RPM avec une [version] de "9".

Les étapes 2 et 3 sont répétées si nécessaire jusqu'à ce qu'une différence se produise.

Installation et suppression de fichiers

Remarque :Habituellement, une seule ou d'un RPM peut être installée à la fois.

Les versions ultérieures sont généralement installées en utilisant le "-U ” (mise à jour) de la fonction RPM au lieu de la fonction “-i ” Fonction RPM. Les exceptions courantes à la règle du RPM unique sont les RPM du noyau. Un système a généralement plusieurs versions de noyaux installées ; RPM a une liste des RPM qui peuvent avoir plusieurs versions installées. Pour supprimer une version lorsque plusieurs sont installées, vous devez spécifier entièrement le nom et la version du package.

Sur l'architecture x86_64, il est courant d'avoir à la fois les packages RPM 32 bits « .i386 » et 64 bits « .x86_64 » installés pour prendre en charge les applications 32 bits et 64 bits. Normalement, RPM n'affiche pas l'architecture d'un package sur une requête mais vous pouvez l'afficher manuellement.

Installation et suppression

# rpm -i --install (install new RPM; error if already installed)
# rpm -U --upgrade (delete existing RPM, if any; install new)
# rpm -F --freshen (update RPM only if package already installed)
# rpm -e --erase (remove, delete, expunge)

Options communes
Sortie :-v (verbeux - nom de fichier), -h (hachage)
Conditions préalables :–nodeps, –replacefiles, –force (ÊTRE PRUDENT ICI !!!)
Déplacement :–excludepath, –prefix, –relocate, –badreloc, –root
Support URL :ftp, http

Exemples :

# rpm -ivh binutils-2.11.90.0.8-12.i386.rpm
# rpm -Uvh finger-0.17-9-i386.rpm
# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
# rpm -e diffutils
# rpm -e kernel-enterprise-2.4.9-e.12

Astuce :N'utilisez jamais, au grand jamais, l'option « -U » pour installer un nouveau RPM du noyau. La fonction de mise à jour "-U" supprime d'abord le RPM actuel du système, puis tente d'installer le nouveau RPM. Tout problème empêchant l'installation du nouveau RPM empêchera le démarrage du système. Ce n'est pas ce que vous voulez, utilisez donc toujours le commutateur "-i" pour installer un RPM du noyau.

Requêtes (forfaits et/ou informations)

Utilisez une requête pour obtenir des informations sur les packages installés. Vous pouvez interroger tous les packages installés ou un seul package installé. Vous pouvez également savoir quel RPM fournit un fichier particulier.

# rpm -q [packages] [information]
# rpm -qa (all installed packages)
# rpm -q package_name
# rpm -qf (filename)
# rpm -qp (package filename)

Information
par défaut (nom du package)
-i :informations générales
-l :liste de fichiers

Exemples :

# rpm -qa
# rpm -q kernel -i (information)
# rpm -q kernel -l (files contained in package)
# rpm -q kernel --requires (prereqs)
# rpm -q kernel --provides (capabilities provided by package)
# rpm -q kernel --scripts (scripts run during installation and removal)
# rpm -q kernel --changelog (revision history)
# rpm -q kernel -queryformat format (rpm --querytags for list of options)

Astuce  :lors de la recherche d'un package RPM particulier lorsque le nom exact n'est pas connu, un pipeline de commandes tel que :

$ rpm -qa | grep foo

est couramment utilisé. Les versions ultérieures de l'outil RPM permettent de le faire succinctement comme :

$ rpm -qa '*foo*'

Requêtes – Vérification (fichiers)

La base de données RPM contient de nombreux attributs sur chaque fichier installé par un RPM. Vous pouvez vérifier l'état actuel du fichier par rapport aux informations cataloguées par RPM lors de l'installation du paquet.

# rpm -V package_name
# rpm -Va (verify all)
# rpm -Vf (filename)
# rpm -Vp (package filename)
Remarque :De nombreuses distributions Linux incluent un RPM "prelink" qui tente de réduire le temps nécessaire pour démarrer une application à l'aide d'une bibliothèque partagée (la plupart des applications utilisent au moins une bibliothèque partagée et potentiellement des dizaines) en ajoutant des informations spéciales directement dans le fichier programme d'une application.

L'ajout de ces informations accélère le démarrage des applications, mais les modifications de fichier invalident la plupart des attributs de fichier dans la base de données RPM, tels que la date de dernière modification de fichier, la taille du fichier et la somme de contrôle MD5 du fichier.

Requêtes – Vérification (packages)

# rpm -import /mnt/cdrom/RPM-GPG-KEY
# rpm -q gpg-pubkey
# rpm --checksig m4-1.4.1-11.i386.rpm

Exemples :

# rpm -qf /path/filename (what package owns filename)
# rpm -qf /path/filename -i (what does it do)
# rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4)
# rpm -qp m4-1.4.1-11.i386.rpm --requires (prereqs needed to install m4)
# rpm -q --whatprovides glibc.so (what package provides requisite library)

Réparer la base de données RPM

L'outil RPM utilise sa propre implémentation de base de données personnalisée pour contenir ses informations. Parfois, cette base de données peut être corrompue; les symptômes incluent des affirmations selon lesquelles un package RPM installé est manquant ; ou les tentatives de mise à jour d'un RPM se bloquent simplement. Si votre base de données RPM est bloquée ou corrompue, vous pouvez essayer de la réparer avec ces commandes. Il n'est pas garanti que ce processus fonctionne.

Vous devez être connecté avec le privilège de superutilisateur (alias "root") pour ces étapes. Les commandes peuvent être copiées et collées directement dans une fenêtre de terminal racine.

1. Assurez-vous qu'il n'y a plus de processus RPM en cours d'exécution sur votre système. Utilisez la commande ps pour les identifier. Utilisez la commande kill pour mettre fin à tous les processus "rpm" que vous trouvez ; un "kill -9" peut être nécessaire.

2. Supprimez les fichiers de verrouillage utilisés par RPM :

# rm -f /var/lib/rpm/__db*

3. Si vous rencontriez une commande "rpm" suspendue, essayez à nouveau. Si cela fonctionne, vous avez terminé. Si ce n'est pas le cas, répétez les étapes 1 et 2. Passez ensuite à l'étape suivante.

4. Faites une sauvegarde de votre base de données RPM :

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Reconstruisez votre base de données RPM :

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Réessayez votre commande RPM ayant échoué.


Linux
  1. Comment créer des paquets rpm

  2. Comment activer Snap sur Linux Mint 20 et installer des packages Snap

  3. Comment installer, supprimer et mettre à jour des logiciels sur Arch Linux

  4. Comment installer des packages à partir d'un référentiel spécifique sous Linux

  5. Exemples de commandes RPM pour interroger, installer, supprimer et mettre à niveau des packages

Supprimer les packages installés à une certaine date/heure sous Linux

Comment installer un logiciel à partir de la source sous Linux

Comment installer et supprimer des logiciels dans Manjaro Linux

Comment installer le logiciel Arduino (IDE) sur Linux

Comment installer un logiciel Windows sur Linux avec Bottles

Comment installer wget sur CentOS 7 avec une feuille de triche wget