web-dev-qa-db-ja.com

どのrpmパッケージが探しているファイルを提供しているのか、どうすればわかりますか?

例として、私はおそらくmod_files.shパッケージに付属するphp-develファイルを探しています。私は、yummod_files.shパッケージをphp-devel x86_64 5.1.6-23.2.el5_3パッケージと共にインストールすると思いましたが、そのファイルは私のファイルシステムにはインストールされていないようです。

どのパッケージが特定のファイルをインストールしているのか、どうすればわかりますか?探しているファイルが含まれている可能性があるパッケージを必ずしもローカルにダウンロードしていない場所を探しています。

私はCentOS 5を使っています。

198
wherestheph

これは古い質問ですが、現在の答えは間違っています:)

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は、パッケージの内容の一覧表示、依存関係、逆依存関係など、他のクエリを実行できます。

259
rjh

すでにインストールされているファイルを所有している(または提供している)パッケージを知るには、次のようにします。

rpm -qf myfilename

注:このコマンドはrootとして実行する必要はありません(Sudo yum whatprovides myfilenameとは反対に)

194
dj_segfault

最も一般的な答えは不完全です。

この検索は一般にインストールされたパッケージからのファイルに対してのみ行われるので、yum whatprovidesはすべての外部リポジトリを無効にすることですばやく高速になります(暗黙の "インストール"リポジトリを無効にすることはできません)。

yum --disablerepo=* whatprovides <file>
30
user93374

インターネット(リポジトリ)に接続しているときにパッケージを見つけるのは簡単ですが、RedhatまたはCentos DVD内のRPMパッケージにしかアクセスできない場合(これは私がサーバーを回復する必要があり、アプリケーションが必要なときによく起こります)以下のコマンドを使うと、インターネットやリポジトリから完全に独立しています。 (おそらくDVDにたくさんのアンインストールされたパッケージがあるでしょう)。 Packageフォルダを〜/ 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
4
Arash

http://www.rpmfind.net に行き、ファイルを検索してください。

多くの異なるディストリビューションやバージョンで結果が出ますが、FedoraやCentOSもポップアップ表示され、yumでインストールするパッケージ名がわかるでしょう。

3
nos

Rpmユーティリティだけを使って、これはrpmを持っているどんなOSでも動作するはずです:

rpm -q --whatprovides [file name]

参考文献 https://www.thegeekdiary.com/how-to-find-which-rpm-package-provides-a-specific-file-or-library-in-rhel-centos/

0
Slivicon

あなたはここでもあなたのパッケージを使ってこれを行うことができます。私の場合、それはlsb_releaseでした

実行します:yum whatprovides lsb_release

応答:

redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release`

インストールするために実行します。yum install redhat-lsb-core

パッケージ名は、yum packagerが自分に最適なものを選択できるように、番号とシステムタイプを指定しないでください。

0
matson kepson