2009-07-15 12 views
176

例として、php-develパッケージに付属すると思われるmod_files.shファイルを探しています。 yummod_files.shファイルをphp-devel x86_64 5.1.6-23.2.el5_3パッケージでインストールしますが、ファイルが私のファイルシステムにインストールされていないようです。探しているファイルをどのrpmパッケージが提供しているかを見つけるにはどうすればよいですか?

特定のファイルをインストールするパッケージを確認するにはどうすればよいですか?私は探しているファイルを含む可能性のあるパッケージをローカルにダウンロードしていない場所を探しています。私はパッケージ、既にインストールされたファイルを所有している(または提供する)を知るために

+6

superuser.com ___? –

+0

@Grzegorz良い点、私は移動するための投票に入れました。 – rjh

+0

ここではより良い答えです:http://unix.stackexchange.com/a/4706/39281 –

答えて

156

CentOSの5を使用してい

rpm -qf myfilename 

注:このコマンドは、上の(rootで実行する必要はありません。 sudo yum whatprovides myfilenameの逆)

+10

これは、既にインストールされているファイルを所有(または提供)しているパッケージを示します。ありがたいことに、それは私が探していたものです! –

+9

'yum whatprovides ...'のどちらもルートを必要としません – drs

+3

このコマンドは、yumよりも効率的に見えますwhatprovides - おそらく遅いリポジトリからの更新を取得する必要はありません。 – 80x25

1

あなたはhttp://www.rpmfind.netに行き、ファイルを検索します。

あなたは異なるディストリビューションやバージョンの多くの結果を取得しますが、非常に可能性のFedoraおよび/またはCentOSのは、あまりにもポップアップ表示されますし、これが古い

+0

このウェブサイトはオフラインです! – Peter

+1

ウェブサイトはファイルを検索していません。検索語句にはパッケージ名のみを使用します。 – jww

+1

@jwwファイルの検索は少なくとも私にとってはうまくいきます。ドキュメントによれば、実行可能ファイルは、単一のパス名または絶対パス名を持つファイルで検索できます。 – nos

226

yumを使ってインストールするパッケージ名を知っていますよ現在の回答は間違っています。

yum whatprovidesを使用して、必要なファイルの絶対パス(ワイルドカードでも可)を指定します。たとえば:

yum whatprovides '*bin/grep' 

戻り

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities. 
Repo  : base 
Matched from: 
Filename : /bin/grep 

あなたはyum-utilsパッケージで利用可能なrepoqueryツールの出力と速度を、好むかもしれません。

sudo yum install yum-utils 
repoquery --whatprovides '*bin/grep' 
grep-0:2.5.1-55.el5.x86_64 
grep-0:2.5.1-55.el5.x86_64 

repoqueryは、あなたがインターネット(リポジトリ)に接続されている場合さて、パッケージを見つけるなど、このようなパッケージの内容を一覧表示するなど、他のクエリ、依存関係、逆依存関係、

3

を行うことができますあなたが唯一持っている場合しかし、簡単です。 RedhatやCentos DVDの中のRPMパッケージへのアクセス(これはサーバを回復しなければならないときに頻繁に起こり、アプリケーションが必要です)インターネットとリポジトリから完全に独立した以下のコマンドを使うことをお勧めします。 (おそらく、DVDにアンインストールされたパッケージがたくさんあります)。 あなたは〜/ cent_os_dvdにパッケージフォルダをマウントしていると、あなたは「semanage」提供のパッケージを探しているとしましょう、あなたは実行することができます。この検索ので

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`; do rpm -qlp $file |grep '.*bin/semanage'; if [ $? -eq 0 ]; then echo "is in";echo $file ; fi; done 
22

最も人気のある答えが不完全です一般に、インストールされたパッケージのファイルに対してのみ実行されます。yum whatprovidesは、すべての外部reposを無効にして暗黙のうちに高速化されます(暗黙の "installed" repoは無効にできません)。

yum --disablerepo=* whatprovides <file> 
+0

しかし、この場合、OPは具体的には、システムに**インストールされていないファイルがないか探しています。これは彼が持っていると思われるパッケージをインストールした後であっても、 '--disablerepo = * ' – Randall

関連する問題