RPM依存ライブラリ不足の問題はYUMに聞こう!

RPMインストールでの依存ライブラリ問題

CentOSなどでrpmコマンドでRPMをインストールしようとする時、以下のような依存関係のエラーにぶつかることがよくあると思います。

こんなとき、依存パッケージのインストールが必要なのですが、依存パッケージのパッケージ名を見つける方法をどうされているでしょうか? 「liblber-2.4.so.2()(64bit)」みたいなライブラリのsoファイル名を示されてもパッと分かりませんよね。エラーメッセージでググりますか?私も最初の頃はググっていました。でも、ググっても見つからない場合もありますし、ググった膨大な情報の中から関連情報を探すのに時間がかかる場合があります(あとバージョンが違って情報が古いとか)。

そんな時、もっと効率的なパッケージ名の探し方があります。それは、「YUMに聞いてみる」です。

yum whatprovides

yumコマンドにはwhatprovidesというオプションがあります。これは、特定のコマンドやライブラリがどのYUMパッケージの中に含まれているのかをレポジトリから検索するオプションです。そのため、soファイルからの検索もできます。

さっそく、先程の「liblber-2.4.so.2()(64bit)」のパッケージ名を検索してみましょう。

「openldap」のパッケージ名が出てきましたね。YUMのbaseとupdateのレポジトリの中のopenldapが、liblber-2.4.so.2のライブラリをサポートしているという事なので、openldapをYUMからインストールします。

これで依存パッケージを発見して、依存問題を1つ解決することが出来ました。これ、けっこう知っておくと便利です。

または、ダウンロードしてきたRPMファイルを指定して、

とすると、依存関係のパッケージを見つけて列挙してインストール確認してくれます。こちらもかなり便利です。

yum whatprovidesの限界

もちろん、yum whatprovidesの限界もあります。あくまでそのサーバーの/etc/yum.repos.d/の中に登録されているレポジトリから探してくるので、未登録のサードパーティーレポジトリや野良RPMに含まれているライブラリならば、情報は出て来ません。

そのため、使い分ける必要があります。私はrpmコマンドで依存関係の問題が出たら、まずYUMに問い合わせを行なって、それでも見つからなかったらライブラリ名でググって情報を探すようにしています。大抵のライブラリはCentOS標準のYUMレポジトリか、epelまたはremiなどの拡張レポジトリに含まれているので、そんなにググる機会は多くないです。

4 件のコメント