列出yum和rpm不匹配的已安装软件包

时间:2015-02-16 05:36:50

标签: centos

如何在Cent OS上有效地列出已安装和可用的软件包?

我已经尝试安装了yum list,它应该输出所有已安装的列表,而rpm -qa会产生不同的结果。

我应该相信哪一个?或者我省略了什么?

2 个答案:

答案 0 :(得分:1)

我的理解是:rpm -qa最好知道 安装了什么(RPM包,对吧!)。而yum更好地了解可以安装的内容并找到所需的依赖项。通常可以将yum用于两种目的。

我在CentOS 7系统上测试过。它们具有几乎相同的列表,除了rpm还报告了一些gpg-pubkey伪包(尝试rpm -qa gpg-pubkey\*)。

如果您想比较系统上的列表,请先获取rpm的列表:

$ rpm -q -a --qf '%{NAME}\t%{ARCH}\t%{VERSION}\t%{RELEASE}\n' | sort > /tmp/rpm-qa.lst 

然后提取YUM的列表(使用repoquery作为包yum-utils的一部分:

$ repoquery -q -a --installed  --qf '%{NAME}\t%{ARCH}\t%{VERSION}\t%{RELEASE}' | sort > /tmp/repo-qa.lst 

然后比较:

$ diff -u0 /tmp/rpm-qa.lst /tmp/repo-qa.lst
--- /tmp/rpm-qa.lst     2015-03-08 16:07:38.297325253 +0100
+++ /tmp/repo-qa.lst    2015-03-08 16:07:43.281438369 +0100
@@ -143,1 +142,0 @@
-gpg-pubkey     (none)  352c64e5        52ae6884

(另见问题https://unix.stackexchange.com/q/190203/16640

答案 1 :(得分:0)

两个命令的工作方式相同,只是“yum list installed”输出可能大于'rpm -qa',因为yum也会在其输出中显示包依赖关系。

使用rpm安装软件包时,我们需要手动安装依赖项,而yum会自动执行此操作。所以在这种情况下,如果你想列出只使用'rpm -qa'的软件包,或者你需要列出与之关联的所有软件包和依赖项,请使用'yum list installed'