GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So fragen Sie Paketinformationen mit dem RPM-Paketmanager ab

RPM ist das rekursive Akronym für RPM Package Manager:Es ist der standardmäßige Low-Level-Paketmanager in einigen der bekanntesten und am häufigsten verwendeten Linux-Distributionen wie Fedora, Red Hat Enterprise Linux, CentOS, OpenSUSE und ihren Derivaten. Die Software ist erwartungsgemäß kostenlos und Open Source; bei Aufruf mit -q Option kann es verwendet werden, um Pakete abzufragen, um bestimmte Informationen wie Abhängigkeiten, Empfehlungen, Dateien usw. abzurufen. In diesem Tutorial lernen wir, wie man solche Abfragen durchführt.

In diesem Tutorial lernen Sie :

  • Wie man RPM im "Abfrage"-Modus ausführt
  • So erhalten Sie allgemeine Informationen zu einem Paket
  • Wie man ein Paketänderungsprotokoll liest
  • Wie man die von einem Paket bereitgestellten Dateien auflistet
  • Wie man die von einem Paket verwendeten Skripte auflistet
  • Wie man Paketabhängigkeiten und -empfehlungen auflistet
  • Wie man Pakete auflistet, die durch ein RPM veraltet sind

So fragen Sie Paketinformationen mit dem RPM-Paketmanager ab

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Distributionen, die den RPM-Paketmanager verwenden
Software Der RPM-Paketmanager
Andere Keine
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass gegebene Linux-Befehle als normaler nicht-privilegierter Benutzer ausgeführt werden

RPM im Abfragemodus aufrufen

Der RPM-Paketmanager kann verwendet werden, um den Status des Systems zu ändern, da er zum Installieren, Aktualisieren und Entfernen von Paketen verwendet werden kann (wenn er mit -i aufgerufen wird , -U und e Optionen), oder es kann im „Abfrage“-Modus ausgeführt werden, ohne dass Administratorrechte erforderlich sind, wenn es mit -q gestartet wird Option, die die Kurzversion von --query ist .

Wenn ein Paket bereits auf unserem System installiert ist, brauchen wir es nur beim Namen zu nennen; wenn dies nicht der Fall ist und wir eine heruntergeladene .rpm abfragen möchten Datei müssen wir zum Beispiel den -p verwenden (--package ) und geben Sie den Pfad der Datei als Argument an. Sehen wir uns einige praktische Beispiele an, wie Informationen über ein Paket abgerufen werden können.

Allgemeine Informationen über ein Paket erhalten

Eines der grundlegenden Dinge, die wir tun möchten, wenn wir uns mit einem RPM-Paket befassen, ist die Anzeige allgemeiner Informationen darüber. Um diese Aufgabe zu erfüllen, müssen wir lediglich das -i verwenden (oder --info ) Option beim Aufrufen von rpm im Abfragemodus. Für dieses Beispiel arbeiten wir mit dem Paket „gimp“, das bereits im System installiert ist. In diesem Fall würden wir Folgendes ausführen:

$ rpm -qi gimp

Unmittelbar nachdem wir den Befehl aufgerufen haben, erhalten wir eine Ausgabe ähnlich der folgenden, die Informationen wie die Softwarebeschreibung, ihre Version, Architektur, Installationsdatum, Größe usw. enthält:

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.

Lesen eines Paketänderungsprotokolls

Wie wir wissen, ist ein Änderungsprotokoll ein Protokoll, in dem alle an einem Projekt vorgenommenen Änderungen gemeldet und chronologisch geordnet werden. Wenn wir das Änderungsprotokoll eines RPM-Pakets lesen möchten, müssen wir den RPM-Paketmanager im Abfragemodus aufrufen und --changelog verwenden Möglichkeit. Sehen wir uns ein Beispiel an:

$ rpm -q --changelog gimp

Hier ist die (abgekürzte) Ausgabe des obigen Befehls in der neuesten Version von 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)

Alle Dateien auflisten, die von einem Paket bereitgestellt werden

Wenn wir ein Paket auf unserem System installieren, wird eine Reihe von Dateien an die entsprechenden Stellen kopiert, wie vom Betreuer vorgesehen. Wenn wir die Dateien auflisten wollen, die von einem Paket bereitgestellt werden, das bereits auf unserem System installiert ist, können wir den
rpm-Paketmanager im Abfragemodus mit -l aufrufen Option (kurz für --list ):

$ rpm -ql gimp

Wie wir bereits gesagt haben, wenn wir ein Paket vorher abfragen möchten wir installieren es, stattdessen müssen wir das -p hinzufügen Option und geben Sie den Pfad des Pakets als Argument an:

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

Der obige Befehl erzeugt das folgende Ergebnis:

/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
[...]

Die von einem Paket verwendeten Skripte auflisten

Etwas .rpm packages verwendet eine Reihe von Skripten oder „Skriptlets“, die als Teil des Installations- oder Entfernungsprozesses ausgeführt werden. Wenn wir sie uns ansehen wollen, können wir das tun, indem wir rpm im Abfragemodus mit den --scripts aufrufen
Option. Für dieses Beispiel checken wir die Skripte aus, die in systemd enthalten sind Paket:

$ rpm -q --scripts systemd

Unten sehen wir die (abgeschnittene) Ausgabe des obigen Befehls, wenn er auf Fedora 34 gestartet wird. Wie Sie sehen können, können wir vor den Skripten selbst feststellen, dass der Kontext, in dem sie verwendet werden, ebenfalls gemeldet wird (z. B. „preinstall“ oder „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 || :
[...]

Eine andere ähnliche Option ist --triggers die verwendet wird, um die Trigger-Skripte anzuzeigen in einem Paket enthalten. Was sind Trigger-Skripte? Sie sind im Grunde genommen Skripte, die ausgeführt (ausgelöst) werden, wenn sich der Status eines anderen Pakets
ändert:

$ rpm -q --triggers systemd

Mit dem obigen Befehl können wir die in der systemd enthaltenen Trigger-Skripte visualisieren Paket:

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

Paketabhängigkeiten und Empfehlungen auflisten

Eine weitere häufige Aufgabe, die wir möglicherweise ausführen möchten, besteht darin, die Abhängigkeiten eines RPM-Pakets zu finden. Die Option, mit der wir die Aufgabe erledigen können, ist -R (kurz für --requires ). Um beispielsweise die Abhängigkeiten des „gimp“-Pakets zu überprüfen, würden wir den folgenden Befehl ausführen:

$ rpm -qR gimp

Sobald wir den Befehl ausführen, wird die Liste der Softwareabhängigkeiten auf dem Bildschirm angezeigt:

/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
[...]

Wenn anstelle des -R Option verwenden wir --recommends wir können eine Liste der Software erhalten, die von dem Paket, das wir abfragen, nicht unbedingt benötigt wird, aber von ihm empfohlen wird:

$ rpm -q --recommends gimp

Liste der Pakete auf, die durch ein RPM veraltet sind

Auf die gleiche Weise wie in den obigen Beispielen können wir sehen, welche Pakete veraltet werden nach dem Paket, das wir abfragen. Alles, was wir tun müssen, ist die Verwendung von --obsoletes Möglichkeit:

$ rpm -q --obsoletes gimp

Hier ist die Ausgabe des Befehls im Beispiel:

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

Schlussfolgerungen

Rpm ist ein sehr leistungsfähiger Paketmanager:In diesem Tutorial haben wir gesehen, wie man ihn im „Abfrage“-Modus ausführt. Wir haben gesehen, wie man allgemeine Informationen über ein Paket erhält, wie z. B. seine Version und Architektur, wie man ein Paket-Änderungsprotokoll liest, wie man alle Dateien auflistet, die von einem Paket installiert werden, wie man einen Blick auf die „Skriptlets“ wirft als Teil der Paketverwaltung verwendet werden und wie man eine Liste von Paketabhängigkeiten und Empfehlungen erhält.


Linux
  1. Wie man RPM-Pakete baut

  2. So verwenden Sie den XBPS-Paket-Manager unter Void Linux

  3. So erstellen Sie ein Linux-RPM-Paket

  4. So installieren Sie RPM-Pakete auf Debian 11 Bullseye

  5. Wie entpacke ich den Inhalt einer RPM?

So installieren Sie RPM-Pakete unter CentOS 8

So installieren Sie RPM-Pakete in CentOS, RHEL und Fedora

So installieren Sie RPM-Pakete unter Ubuntu 22.04 LTS

Wie bearbeite ich vorhandene Pakete im WHM?

RPM-Befehl:15 Beispiele zum Installieren, Deinstallieren, Aktualisieren und Abfragen von RPM-Paketen

So führen Sie ein Downgrade von Paketen auf einem Linux-System durch:Der ultimative Leitfaden