例として、私はおそらくmod_files.sh
パッケージに付属するphp-devel
ファイルを探しています。私は、yum
がmod_files.sh
パッケージをphp-devel x86_64 5.1.6-23.2.el5_3
パッケージと共にインストールすると思いましたが、そのファイルは私のファイルシステムにはインストールされていないようです。
どのパッケージが特定のファイルをインストールしているのか、どうすればわかりますか?探しているファイルが含まれている可能性があるパッケージを必ずしもローカルにダウンロードしていない場所を探しています。
私はCentOS 5を使っています。
これは古い質問ですが、現在の答えは間違っています:)
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
は、パッケージの内容の一覧表示、依存関係、逆依存関係など、他のクエリを実行できます。
すでにインストールされているファイルを所有している(または提供している)パッケージを知るには、次のようにします。
rpm -qf myfilename
注:このコマンドはrootとして実行する必要はありません(Sudo yum whatprovides myfilename
とは反対に)
最も一般的な答えは不完全です。
この検索は一般にインストールされたパッケージからのファイルに対してのみ行われるので、yum whatprovidesはすべての外部リポジトリを無効にすることですばやく高速になります(暗黙の "インストール"リポジトリを無効にすることはできません)。
yum --disablerepo=* whatprovides <file>
インターネット(リポジトリ)に接続しているときにパッケージを見つけるのは簡単ですが、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
http://www.rpmfind.net に行き、ファイルを検索してください。
多くの異なるディストリビューションやバージョンで結果が出ますが、FedoraやCentOSもポップアップ表示され、yumでインストールするパッケージ名がわかるでしょう。
Rpmユーティリティだけを使って、これはrpmを持っているどんなOSでも動作するはずです:
rpm -q --whatprovides [file name]
あなたはここでもあなたのパッケージを使ってこれを行うことができます。私の場合、それは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が自分に最適なものを選択できるように、番号とシステムタイプを指定しないでください。