GNU/Linux >> Linux の 問題 >  >> Linux

RPM パッケージをインストールせずに抽出する方法

通常、RPM のファイル コンテンツがインストールされます。これは、RPM ファイルがファイル システム内の適切な場所にコピーされ、使用できるようになることを意味します。たとえば、bash バイナリ RPM をインストールすると、「/bin/bash」ファイルが想定される場所に配置されます。 RPM をインストールするには、「-i」 」または「-U 」 スイッチ:

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

RPM パッケージ内のファイルのリスト

RPM クエリを実行して「-p」を追加すると、RPM 内のファイルのリストを取得できます。 」 スイッチ:

$ 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
...

RPM パッケージ ファイルからファイルを抽出する方法

場合によっては、RPM パッケージのコンテンツまたは単一のファイルを取得したい場合があります。これを行うには、rpm2cpio を使用できます。 変換ツール。 rpm2cpio ツールは、ソースまたはバイナリー RPM のコンテンツを、TAR ではなく CPIO アーカイブの形式で抽出します。 rpm2cpio の出力は標準出力に書き込まれ、通常は cpio コマンドにパイプされます。

1.パッケージ ファイル内のファイルの一覧表示

この例では、-t を使用しました rpm2cpio によって作成されたアーカイブの「目次」を作成するように cpio に指示するオプション。これにより、ファイルを抽出するときに正しいファイル名とパスを簡単に取得できます。

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

「rpm -qpl」コマンドではファイル名が絶対パス「/bin/bash」として表示されますが、「cpio -t」出力では代わりに「./bin/bash」相対パス名が使用されることに注意してください。 rpm2cpio を通常のユーザーとして使用して、通常は特権ディレクトリにインストールされるファイルを抽出できるため、これは非常に便利です。

次の例は、出力がどのように表示されるかを示しています。

$ 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.パッケージ ファイルから 1 つまたは複数のファイルを抽出する

rpm2cpio を使用して CPIO アーカイブを生成し、cpio の「-i」スイッチを使用して目的のファイルを抽出します。

$ 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

この場合、オプション「-i "、"-v 」、「-d」 」 cpio を次のように指定します:
-i – アーカイブから 1 つ以上のファイルを抽出します。要求されたファイル名は、「cpio -t」の目次、またはシェルのようなワイルドカード パターンと正確に一致する必要があります。目的のファイルが既に存在する場合、コマンドに「-u」スイッチを追加しない限り、cpio は上書きを拒否します。
-d – cpio コマンドで指定されたファイル名の前にディレクトリを作成します。ディレクトリが既に存在する場合は、「-d」スイッチを省略できますが、常に指定しても害はありません。
-v – 処理されたすべてのファイルの名前を、CPIO アーカイブ ファイルのサイズとともに 512 バイト ブロックで表示します。このサイズは RPM パッケージのサイズではなく、cpio が直接認識しないことに注意してください。

ファイル名が指定されていない場合、すべての RPM ファイルが抽出されます。


Linux
  1. Linuxにインストールせずにパッケージをテストする方法

  2. RPMコマンド

  3. RPM:パッケージのインストール エラー:cpio:読み取りに失敗しました

  1. Linux で rpm パッケージの整合性をチェックする方法

  2. rpm の内容を抽出するにはどうすればよいですか?

  3. インストールされていない RPM パッケージの依存関係のリストを取得するには?

  1. インストールする前にLinuxパッケージのバージョンを確認する方法

  2. LinuxRPMパッケージを作成する方法

  3. root にならずに RPM をインストールするにはどうすればよいですか?