web-dev-qa-db-ja.com

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

私たちの運用サーバーは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つのエントリがここにリストされているのですか?

38
Gnanam
  1. rpm -q --requires somepackagehere

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

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
35
davey

イグナシオの答えに続いて、次の操作を行うことにより、パッケージの特定のアーキテクチャを確認できます。

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

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

6
Alex

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

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

はい、rpmまたはyumが機能し、質問に正しく回答します。 rpmyumの主な違いは、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
3
Suave-V

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

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