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

So extrahieren Sie das RPM-Paket, ohne es zu installieren

Der Dateiinhalt eines RPM wird normalerweise installiert. Das bedeutet, dass die RPM-Dateien an die richtigen Stellen im Dateisystem kopiert werden, damit sie verwendet werden können. Wenn Sie beispielsweise das binäre Bash-RPM installieren, wird die Datei „/bin/bash“ an ihrem erwarteten Speicherort abgelegt. Um ein RPM zu installieren, verwenden Sie entweder das „-i “ oder „-U ” Schalter:

$ rpm -ivh bash-3.1-16.1.x86_64.rpm

Auflistung der Dateien innerhalb eines RPM-Pakets

Sie können eine Liste der Dateien in einem RPM erhalten, indem Sie eine RPM-Abfrage durchführen und das „-p hinzufügen ” Schalter:

$ rpm -q -l -p bash-3.1-16.1.x86_64.rpm
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
...

So extrahieren Sie Dateien aus einer RPM-Paketdatei

Manchmal möchten Sie vielleicht den Inhalt oder eine einzelne Datei aus einem RPM-Paket erhalten. Dazu können Sie das rpm2cpio verwenden Konvertierungstool. Das Tool rpm2cpio extrahiert den Inhalt eines Quell- oder Binär-RPMs in Form eines CPIO-, nicht eines TAR-Archivs. Die Ausgabe von rpm2cpio wird auf die Standardausgabe geschrieben und normalerweise in den cpio-Befehl geleitet.

1. Auflisten der Dateien in einer Paketdatei

In diesem Beispiel haben wir das -t verwendet Option, um cpio anzuweisen, ein „Inhaltsverzeichnis“ des von rpm2cpio erstellten Archivs zu erstellen. Dies kann es viel einfacher machen, den richtigen Dateinamen und Pfad zu finden, wenn Sie eine Datei extrahieren möchten.

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t

Beachten Sie, dass der Befehl „rpm -qpl“ den Dateinamen als absoluten Pfad „/bin/bash“ anzeigt, die Ausgabe von „cpio -t“ jedoch stattdessen den relativen Pfadnamen „./bin/bash“ verwendet. Dies ist sehr praktisch, da Sie rpm2cpio als normaler Benutzer verwenden können, um Dateien zu extrahieren, die normalerweise in privilegierten Verzeichnissen installiert würden.

Das folgende Beispiel zeigt, wie die Ausgabe aussieht:

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t
./bin/bash
./bin/sh
./etc/skel/.bash_logout
./etc/skel/.bash_profile
./etc/skel/.bashrc
...
10510 blocks

2. Extrahieren einer oder mehrerer Dateien aus einer Paketdatei

Verwenden Sie rpm2cpio, um das CPIO-Archiv zu generieren, und verwenden Sie den cpio-Schalter „-i“, um die gewünschten Dateien zu extrahieren:

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -ivd ./bin/bash
./bin/bash
10510 blocks
$ ls -l /home/user/bin/bash
total 744
-rwxr-xr-x 1 user user 753720 March  1 13:10 bash

In diesem Fall sind die Optionen „-i “, „-v “ und „-d ” direkt cpio an:
-i – Extrahieren Sie eine oder mehrere Dateien aus einem Archiv. Die angeforderten Dateinamen müssen genau mit dem Inhaltsverzeichnis „cpio -t“ oder einem Shell-ähnlichen Platzhaltermuster übereinstimmen. Wenn die Zieldatei bereits existiert, weigert sich cpio, sie zu überschreiben, es sei denn, der Befehl „-u“ wird hinzugefügt.
-d – Erstellen Sie alle Verzeichnisse, die vor dem im cpio-Befehl angegebenen Dateinamen stehen. Wenn die Verzeichnisse bereits existieren, könnte der Schalter „-d“ weggelassen werden, schadet aber nicht, wenn er immer angegeben wird.
-v – Zeigen Sie die Namen aller verarbeiteten Dateien zusammen mit der Größe der CPIO-Archivdatei in 512-Byte-Blöcken an. Beachten Sie, dass diese Größe nicht die Größe des RPM-Pakets ist, das cpio niemals direkt sieht.

Wenn keine Dateinamen angegeben werden, werden alle RPM-Dateien extrahiert.


Linux
  1. So testen Sie ein Paket, ohne es unter Linux zu installieren

  2. So überprüfen Sie die Linux-Paketversion vor der Installation

  3. So erstellen Sie ein Linux-RPM-Paket

  4. Wie kann ich ein RPM installieren, ohne root zu sein?

  5. Wie erhalte ich eine Liste der Abhängigkeiten eines nicht installierten RPM-Pakets?

So installieren Sie RPM auf CentOS

So installieren Sie RPM-Pakete unter CentOS 8

So erstellen Sie ein RPM-Paket aus einem Tarball

So laden Sie Pakete mit APT herunter, ohne sie zu installieren

So zeigen Sie Dateien aus RPM-, DEB-, Depot- und MSI-Paketen an und extrahieren sie

So verwenden Sie „yum downloadonly“, um ein Paket herunterzuladen, ohne es zu installieren