如何列出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个条目?

Answers:


28
  1. rpm -q --requires somepackagehere

  2. 一个是i?86包裹,另一个是x86_64包裹。


我的操作系统是64位。2个体系结构软件包可以共存于同一服务器中吗?同时拥有2个体系结构软件包的目的/需求是什么?
加纳南

2
派生自RH / Fedora的发行版支持multiarch,借此可以共存多个属于“不同但足够相似”的arch的软件包,以允许运行为每个arch构建的可执行文件。
伊格纳西奥·巴斯克斯

不幸的是,这要求软件包已在本地安装:\
rogerdpack

@rogerdpack:是的。这正是这个问题所要的。
伊格纳西奥·巴斯克斯

是的,不幸的是,如果您在Google上列出“列出RPM依赖项”,则google会发送“所有人都直接在这里”-google的范围已经超出了这个范围!无论如何,对于任何希望使用该功能的关注者,请参见davey的答案。
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软件包。
davey 2010年

1
+1在这里使用YUM很不错,因为它是递归的,并且可以解决“ perl(COnfig :: Tiny)”或“ libc.so(64bit)”之类的问题。
djhaskin987 2014年

6

按照Ignacio的回答,您可以通过执行以下操作来查看软件包的特定体系结构:

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

就我而言,我只有一个i686软件包...但是您可以通过这种方式获得与这些软件包相关联的体系结构。如果您对--queryformat的其他用途感兴趣,请发出a rpm --querytags来查看可用变量的列表。


1
+1您的按体系结构列出的命令也很有帮助。
加纳南

3

我有一个快速的shell片段,它打印出所有已安装的软件包及其依赖项:

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

是的,无论是rpmyum作品,并正确回答问题。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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.