RPM依存関係をリストする方法は?


36

実稼働サーバーはCentOSリリース5.2(最終)を実行しています。

すでにインストールされている RPMパッケージのすべての依存関係を表示/取得/一覧表示するにはどうすればよいですか?

例:SQLite v3.3.6は既にサーバーにインストールされています。この特定のパッケージのすべての依存関係を確認します。

コマンドの出力は次のとおりです。 rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

また、なぜsqlite-3.3.6-2ここの2つのエントリをリストしているのですか?

回答:


28
  1. rpm -q --requires somepackagehere

  2. 1つはi?86パッケージ、もう1つはx86_64パッケージです。


私のOSは64ビットです。2つのアーキテクチャパッケージを同じサーバーに共存させることはできますか?同時に2つのアーキテクチャパッケージを使用する目的/ニーズは何ですか?
グナナム

2
RH / Fedoraから派生したディストリビューションはmultiarchをサポートします。これにより、「different-yet-similar-enough」アーチに属する複数のパッケージを共存させて、いずれかのアーチ用にビルドされた実行可能ファイルを実行できます。
イグナシオバスケス-アブラムス

残念ながら、これにはパッケージが既にローカルにインストールされている必要があります:\
rogerdpack

@rogerdpack:ええ、はい。それがまさに質問が求めたものです。
イグナシオバスケス-エイブラムス

うん、残念ながら「RPM依存関係のリスト」をグーグルで検索した場合、グーグルは「ここに全員」を送信します。とにかく、その機能を望むフォロワーについては、デイビーの回答を参照してください。
rogerdpack

34

このyum deplistコマンドは、どのrpmが依存関係であるかを示します。ここにexpectパッケージの例を示します(これは、ローカルにパッケージをインストールしていない場合でも機能します)。

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

このコマンドは機能していません。私は何かを逃していますか、またはあなたのコマンドに何かがありますか?
グナナム

申し訳ありませんが、スペースがありません。コマンドはyum deplistパッケージです。
デイビー

1
+1ここでYUMを使用すると、再帰的であり、「perl(COnfig :: Tiny)」や「libc.so(64bit)」などの問題を解決できて便利です。
djhaskin987

6

Ignacioの答えに従って、以下を実行することでパッケージの特定のアーキテクチャを確認できます。

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

私の場合、i686パッケージしかありませんが、パッケージに関連付けられたアーキテクチャをそのまま取得できます。--queryformatから他に何が得られるかに興味がある場合は、a rpm --querytagsを発行して、使用可能な変数のリストを確認します。


1
+1アーキテクチャごとにリストするコマンドも役立ちます。
グナナム

3

インストールされているすべてのパッケージとその依存関係を出力する簡単なシェルスニペットがあります。

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

人々はすでに次のように応答しています:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

はい、どちらかrpmまたはyum動作し、質問に正しく回答します。主な違いrpmとは、yumあなたが、ライブラリおよび/またはファイルの要件を満たすためにインストールすることができますどのようなパッケージはyumも示しているということです。残念ながら、パッケージがインストールされていない場合、これらの方法のいずれも役に立ちません。元のポスターでは、チェックするパッケージがインストールされていることが既に指定されているため、これはミュートポイントです。

パッケージをインストールしていない場合はどうなりますか?yumまだ使用できますが、間接的に使用できます。インストール操作をキャンセルすることで、模擬インストールを実行できます。

printf n  |  yum install PKG  |  grep -- "---> Package"

以下に例を示します。

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

レポートの制限に対する素晴らしい回避策。
MarkHu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.