GNU/Linux >> Tutoriels Linux >  >> Linux

Comment interroger les informations sur les packages avec le gestionnaire de packages rpm

RPM est l'acronyme récursif de RPM Package Manager :il s'agit du gestionnaire de packages de bas niveau par défaut dans certaines des distributions Linux les plus connues et les plus utilisées, telles que Fedora, Red Hat Enterprise Linux, CentOS, OpenSUSE et leurs dérivés. Le logiciel, comme vous pouvez vous y attendre, est gratuit et open source; lorsqu'il est invoqué avec le -q option, il peut être utilisé pour interroger des packages afin de récupérer des informations spécifiques, telles que des dépendances, des recommandations, des fichiers, etc. Dans ce didacticiel, nous apprenons à effectuer de telles requêtes.

Dans ce didacticiel, vous apprendrez :

  • Comment exécuter rpm en mode "requête"
  • Comment obtenir des informations générales sur un package
  • Comment lire un journal des modifications de package
  • Comment lister les fichiers fournis par un package
  • Comment lister les scripts utilisés par un package
  • Comment répertorier les dépendances et les recommandations d'un package
  • Comment lister les packages rendus obsolètes par un rpm

Comment interroger les informations sur les packages avec le gestionnaire de packages rpm

Configuration logicielle requise et conventions utilisées

Configuration logicielle requise et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version du logiciel utilisée
Système Distributions utilisant le gestionnaire de paquets rpm
Logiciel Le gestionnaire de paquets rpm
Autre Aucun
Conventions # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo command
$ - nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié

Invoquer rpm en mode requête

Le gestionnaire de packages rpm peut être utilisé pour modifier l'état du système, car il peut être utilisé pour installer, mettre à niveau et supprimer des packages (lorsqu'il est invoqué avec le -i , -U et e options, respectivement), ou il peut s'exécuter en mode "requête", sans avoir besoin de privilèges administratifs, lorsqu'il est lancé avec le -q option, qui est la version courte de --query .

Si un paquet est déjà installé sur notre système, il suffit de le mentionner par son nom; si ce n'est pas le cas, et que l'on veut interroger un .rpm téléchargé fichier, par exemple, nous devons utiliser le -p (--package ) et fournissez le chemin du fichier comme argument. Voyons quelques exemples pratiques sur la façon de récupérer des informations sur un paquet.

Obtenir des informations générales sur un paquet

L'une des choses de base que nous voudrions faire lorsqu'il s'agit d'un package rpm est d'afficher des informations générales à son sujet. Pour accomplir cette tâche, il suffit d'utiliser le -i (ou --info ) lors de l'appel de rpm en mode requête. Pour cet exemple, nous allons travailler avec le package "gimp", qui est déjà installé dans le système. Dans ce cas, nous lancerions :

$ rpm -qi gimp

Immédiatement après avoir appelé la commande, nous recevons une sortie similaire à la suivante, qui comprend des informations telles que la description du logiciel, sa version, son architecture, sa date d'installation, sa taille, etc. :

Name        : gimp
Epoch       : 2
Version     : 2.10.24
Release     : 1.fc34
Architecture: x86_64
Install Date: Mon 21 Jun 2021 11:26:33 AM CEST
Group       : Unspecified
Size        : 109267268
License     : GPLv3+ and GPLv3
Signature   : RSA/SHA256, Sat 03 Apr 2021 02:00:02 AM CEST, Key ID 1161ae6945719a39
Source RPM  : gimp-2.10.24-1.fc34.src.rpm
Build Date  : Sat 03 Apr 2021 01:13:55 AM CEST
Build Host  : buildhw-x86-11.iad2.fedoraproject.org
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.gimp.org/
Bug URL     : https://bugz.fedoraproject.org/gimp
Summary     : GNU Image Manipulation Program
Description :
GIMP (GNU Image Manipulation Program) is a powerful image composition and
editing program, which can be extremely useful for creating logos and other
graphics for web pages. GIMP has many of the tools and filters you would expect
to find in similar commercial offerings, and some interesting extras as well.
GIMP provides a large image manipulation toolbox, including channel operations
and layers, effects, sub-pixel imaging and anti-aliasing, and conversions, all
with multi-level undo.

Lire un journal des modifications de paquet

Comme nous le savons, un journal des modifications est un journal dans lequel toutes les modifications apportées à un projet sont signalées et classées par ordre chronologique. Si ce que nous voulons faire est de lire le journal des modifications d'un paquet rpm, nous devons invoquer le gestionnaire de paquets rpm en mode requête et utiliser le --changelog option. Voyons un exemple :

$ rpm -q --changelog gimp

Voici la sortie (tronquée) de la commande ci-dessus sur la dernière version de Fedora (34) :

[...]
 Thu Jan 09 2020 Josef Ridky <[email protected]> - 2:2.10.14-3
- Demodularizing of gimp (#1772469)

* Mon Nov 18 2019 Kalev Lember <[email protected]> - 2:2.10.14-2
- Rebuild for libmypaint 1.4.0

* Mon Nov 04 2019 Kalev Lember <[email protected]> - 2:2.10.14-1
- Update to 2.10.14

* Tue Aug 20 2019 Josef Ridky <[email protected]> - 2:2.10.12-3
- Fix default configuration for font folders (#1706653)

* Wed Jul 31 2019 Josef Ridky <[email protected]> - 2:2.10.12-2
- Fix issue with reading SVG files (#1715882)

* Thu Jul 25 2019 Fedora Release Engineering <[email protected]> - 2:2.10.12-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Thu Jun 13 2019 Kalev Lember <[email protected]> - 2:2.10.12-1
- Update to 2.10.12

* Thu Apr 11 2019 Richard Shaw <[email protected]> - 2:2.10.10-2
- Rebuild for OpenEXR 2.3.0.

* Mon Apr 08 2019 Josef Ridky <[email protected]> - 2:2.10.10-1
- New upstream release 2.10.10 (#1697119)

Liste de tous les fichiers fournis par un package

Lorsque nous installons un paquet sur notre système, une série de fichiers sont copiés aux endroits appropriés, comme prévu par son responsable. Si nous voulons lister les fichiers fournis par un package déjà installé sur notre système, nous pouvons invoquer le gestionnaire de packages
rpm en mode requête avec le -l option (abréviation de --list ):

$ rpm -ql gimp

Comme nous l'avons dit précédemment, si nous voulons interroger un package avant nous l'installons, à la place, nous devons ajouter le -p et indiquez le chemin du package en argument :

$ rpm -qlp /path/to/package.rpm

La commande ci-dessus produira le résultat suivant :

/etc/gimp
/etc/gimp/2.0
/etc/gimp/2.0/controllerrc
/etc/gimp/2.0/gimprc
/etc/gimp/2.0/gtkrc
/etc/gimp/2.0/menurc
/etc/gimp/2.0/sessionrc
/etc/gimp/2.0/templaterc
/etc/gimp/2.0/toolrc
/etc/gimp/2.0/unitrc
/usr/bin/gimp
/usr/bin/gimp-2.10
/usr/bin/gimp-console
/usr/bin/gimp-console-2.10
/usr/bin/gimp-test-clipboard-2.0
[...]

Liste des scripts utilisés par un package

Quelques .rpm packages utilise une série de scripts ou "scriptlets" qui sont exécutés dans le cadre du processus d'installation ou de suppression. Si nous voulons les examiner, nous pouvons le faire en appelant rpm en mode requête avec le --scripts
possibilité. Pour les besoins de cet exemple, nous allons vérifier les scripts inclus dans le systemd paquet :

$ rpm -q --scripts systemd

Ci-dessous, nous pouvons voir la sortie (tronquée) de la commande ci-dessus, lorsqu'elle est lancée sur Fedora 34. Comme vous pouvez le voir, avant les scripts eux-mêmes, nous pouvons remarquer que le contexte dans lequel ils sont utilisés est également signalé (par exemple, "preinstall" ou "postinstall ”) :

preinstall scriptlet (using /bin/sh):
getent group cdrom &>/dev/null || groupadd -r -g 11 cdrom &>/dev/null || :
getent group utmp &>/dev/null || groupadd -r -g 22 utmp &>/dev/null || :
getent group tape &>/dev/null || groupadd -r -g 33 tape &>/dev/null || :
getent group dialout &>/dev/null || groupadd -r -g 18 dialout &>/dev/null || :
getent group input &>/dev/null || groupadd -r input &>/dev/null || :
getent group kvm &>/dev/null || groupadd -r -g 36 kvm &>/dev/null || :
getent group render &>/dev/null || groupadd -r render &>/dev/null || :
getent group systemd-journal &>/dev/null || groupadd -r -g 190 systemd-journal 2>&1 || :
[...]

Une autre option similaire est --triggers qui est utilisé pour afficher les scripts de déclenchement contenue dans un colis. Qu'est-ce qu'un script déclencheur ? Ce sont essentiellement des scripts qui sont exécutés (déclenchés) lorsque le statut d'un autre package
change :

$ rpm -q --triggers systemd

Avec la commande ci-dessus, nous pouvons visualiser les scripts de déclenchement contenus dans le systemd paquet :

triggerun scriptlet (using /bin/sh) -- systemd < 246.1-1
# This is for upgrades from previous versions before systemd-resolved became the default.
systemctl --no-reload preset systemd-resolved.service &>/dev/null || :

if systemctl -q is-enabled systemd-resolved.service &>/dev/null; then
  systemctl -q is-enabled NetworkManager.service 2>/dev/null && \
  ! test -L /etc/resolv.conf 2>/dev/null && \
  ! mountpoint /etc/resolv.conf &>/dev/null && \
  grep -q 'Generated by NetworkManager' /etc/resolv.conf 2>/dev/null && \
  echo -e '/etc/resolv.conf was generated by NetworkManager.\nRemoving it to let systemd-resolved manage this file.' && \
  mv -v /etc/resolv.conf /etc/resolv.conf.orig-with-nm && \
  ln -sv ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf 2>/dev/null || :

  systemctl start systemd-resolved.service &>/dev/null || :
fi
triggerpostun scriptlet (using /bin/sh) -- systemd < 247.3-2
# This is for upgrades from previous versions before oomd-defaults is available.
# We use %triggerpostun here because rpm doesn't allow a second %triggerun with
# a different package version.
systemctl --no-reload preset systemd-oomd.service &>/dev/null || :

Répertorier les dépendances et les recommandations d'un package

Une autre tâche courante que nous pouvons souhaiter effectuer est de trouver les dépendances d'un package rpm. L'option qui nous permet d'accomplir la tâche est -R (abréviation de --requires ). Pour vérifier les dépendances du package "gimp", par exemple, nous lancerions la commande suivante :

$ rpm -qR gimp

Une fois la commande exécutée, la liste des dépendances logicielles sera affichée à l'écran :

/usr/bin/python2
babl(x86-64) >= 0.1.78
config(gimp) = 2:2.10.24-1.fc34
fontconfig >= 2.12.4
freetype >= 2.1.7
gegl04(x86-64) >= 0.4.30
gimp-libs(x86-64) = 2:2.10.24-1.fc34
glib2 >= 2.56.2
gtk2 >= 2.24.32
hicolor-icon-theme
[...]

Si au lieu du -R option que nous utilisons --recommends nous pouvons obtenir une liste des logiciels qui ne sont pas strictement nécessaires au paquet que nous interrogeons, mais qui sont recommandés par celui-ci :

$ rpm -q --recommends gimp

Liste des packages rendus obsolètes par un rpm

De la même manière que les exemples ci-dessus, nous pouvons voir quels packages sont rendus obsolètes par le package que nous interrogeons. Tout ce que nous avons à faire est d'utiliser le --obsoletes choix :

$ rpm -q --obsoletes gimp

Voici le résultat de la commande dans l'exemple :

gimp < 2:2.10.24-1.fc34
gimp-help-browser < 2:2.10.24-1.fc34
gimp-unstable < 2:2.10

Conclusion

Rpm est un gestionnaire de paquets très puissant :dans ce tutoriel nous avons vu comment le lancer en mode « requête ». Nous avons vu comment obtenir des informations générales sur un paquet, comme sa version et son architecture, comment lire un changelog de paquet, comment lister tous les fichiers qui seront installés par un paquet, comment jeter un œil aux « scriptlets » qui sont utilisés dans le cadre de la gestion des packages et comment obtenir une liste des dépendances et des recommandations d'un package.


Linux
  1. Comment créer des paquets rpm

  2. Comment utiliser XBPS Package Manager sur Void Linux

  3. Comment créer un package RPM Linux

  4. Comment installer les packages RPM sur Debian 11 Bullseye

  5. Comment supprimer tous les packages avec DNF dont aucun autre package ne dépend

Comment installer les packages RPM sur CentOS 8

Comment installer les packages RPM dans CentOS, RHEL et Fedora

Comment installer les packages RPM sur Ubuntu 22.04 LTS

Comment modifier les packages existants dans le WHM ?

Commande RPM :15 exemples pour installer, désinstaller, mettre à niveau, interroger les packages RPM

Comment rétrograder des packages sur le système Linux :le guide ultime