ファイルを提供するrpm

ファイルを提供するrpm

特定のファイルを提供できる rpm を一覧表示するコマンドは何ですか。すでにインストールされているファイルを提供する rpm ですか、それともインストールされていないファイルを提供できる rpm ですか。

答え1

すでにインストールされているファイル/パッケージの場合:

[jb@smokey ~]$ rpm -qf /etc/sudoers
sudo-1.6.9p13-8.fc9.x86_64

まだインストールされていないファイルとパッケージの場合:

[jb@smokey ~]$ yum whatprovides "/etc/sudoers"
sudo-1.6.9p13-8.fc9.x86_64 : 指定されたユーザーに対して制限付きルートアクセスを許可します
リポジトリ: 更新-newkey
一致した項目:
ファイル名: /etc/sudoers  

sudo-1.6.9p13-4.fc9.x86_64 : 指定されたユーザーに対して制限付きルートアクセスを許可します
リポジトリ: fedora
一致した項目:
ファイル名: /etc/sudoers

sudo-1.6.9p13-8.fc9.x86_64 : 指定されたユーザーに対して制限付きルートアクセスを許可します
リポジトリ: インストール済み
一致した項目:
その他: 一致するもの: /etc/sudoers

「yum whatprovides」はパターン マッチなので、探しているファイルがディレクトリ構造のどこにあるかわからない場合は、引用符とアスタリスクで囲むだけです。

yum whatprovides "*foo*"

同様に、探しているものがバイナリであることが確実な場合は、次のようにします。

yum whatprovides "*bin/foo"

答え2

まだインストールされていないファイルについてはわかりませんが、すでにインストールされているファイルの場合は、rpm -qif を使用できます。

rpm -qif /bin/ls
名前: coreutils 再配置: (再配置不可)
バージョン: 5.97 ベンダー: Red Hat, Inc.
リリース: 23.el5 ビルド日: 2009 年 7 月 13 日月曜日 04:21:27 AM MDT
インストール日: 2009 年 9 月 11 日金曜日 04:46:01 AM MDT ビルド ホスト: hs20-bc1-7.build.redhat.com
グループ: システム環境/ベース ソース RPM: coreutils-5.97-23.el5.src.rpm
サイズ: 9053874 ライセンス: GPLv2+
署名: DSA/SHA1、2009 年 7 月 28 日火曜日 03:42:40 AM MDT、キー ID 5326810137017186
パッケージ作成者: Red Hat, Inc.
URL:
概要: GNU コアユーティリティ: シェルスクリプトでよく使用されるツールのセット
説明 :
これらはGNUコアユーティリティです。このパッケージは、
古い GNU fileutils、sh-utils、および textutils パッケージ。
RPM をダウンロードした場合は、何がインストールされるかを問い合わせることができます。
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
警告: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: ヘッダー V3 DSA 署名: NOKEY、キー ID 37017186
名前: jzlib 再配置: (再配置不可)
バージョン: 1.0.7 ベンダー: Red Hat, Inc.
リリース: 4jpp.1 ビルド日: 2006 年 8 月 8 日火曜日 12:10:03 PM MDT
インストール日: (インストールされていません) ビルドホスト: hs20-bc1-6.build.redhat.com
グループ: 開発/ライブラリ/Java ソース RPM: jzlib-1.0.7-4jpp.1.src.rpm
サイズ: 280436 ライセンス: BSDスタイル
署名: DSA/SHA1、2007 年 1 月 18 日木曜日 08:49:50 AM MST、キー ID 5326810137017186
パッケージ作成者: Red Hat, Inc.
URL:
概要: JZlib は純粋な Java で zlib を再実装したものです
説明 :
zlibは、無料、汎用、法的に制約のないものとして設計されています。
-- つまり、いかなる特許も適用されない -- ロスレスデータ圧縮
ほぼすべてのコンピュータ ハードウェアおよびオペレーティング システムで使用できるライブラリ。
zlibはJean-loup Gailly(圧縮)とMark Adlerによって書かれた。
(減圧)。
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so
jzlib-1.0.7 は、次のディレクトリにあります。
/usr/share/doc/jzlib-1.0.7/LICENSE.txt
java - 1.0.7 の jar ファイル
java の jzlib.jar をコピーします。
RPM に関するすべての情報を表示する必要がない場合は、オプションから「-i」を省略できます。

答え3

yumベースのリポジトリでは、次のようなものを試すことができます。 yum provides */filename

答え4

yumを使いたくない(または使えない)場合(例えばオフラインマシンの場合)、インストールされていないRPMを検索することができます。

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

これには時間がかかることがあるため、インストール DVD などの大きなリポジトリの *.rpm を検索する場合は、しばらくお待ちください。ただし、「-qpl」とは異なり、「-qp --filesbypkg」では、ファイルとそれが属する RPM の両方がリストされます。例:

# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4

# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs          /usr/lib/libpq.so.4
postgresql-libs          /usr/lib64/libpq.so.4

この場合、明らかな重複は、i386 および x86_64 パッケージの存在によるものです (「lib64」文字列から明らかです)。

関連情報