私たちの運用サーバーは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つのエントリがここにリストされているのですか?
rpm -q --requires somepackagehere
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
イグナシオの答えに続いて、次の操作を行うことにより、パッケージの特定のアーキテクチャを確認できます。
$ rpm -qa --queryformat "%{NAME} %{Arch}\n" sqlite
sqlite i686
私の場合、i686パッケージしかありませんが、パッケージに関連付けられているアーキテクチャをそのまま使用できます。 --queryformatから他に何が得られるかに興味がある場合は、rpm --querytags
を発行して、使用可能な変数のリストを確認してください。
人々はすでに次のように反応しています:
rpm -q --requires PKG
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
インストールされているすべてのパッケージとその依存関係を出力する簡単なシェルスニペットがあります。
for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done