Centos 列出已安装的程序包,其中yum和rpm不匹配

Centos 列出已安装的程序包,其中yum和rpm不匹配,centos,Centos,如何有效地列出Cent OS上已安装和可用的软件包 我已经尝试了yum listinstalled,它应该输出所有已安装的列表,而rpm-qa在大小上会产生不同的结果 我应该相信哪一个?还是我遗漏了什么?这两个命令的工作方式相同,唯一的区别是“yum list installed”输出可能大于“rpm-qa”,因为yum在其输出中也会显示包依赖关系 使用rpm安装软件包时,我们需要手动安装依赖项,而yum会自动安装。因此,在这种情况下,如果您只想列出软件包,请使用“rpm-qa”,或者如果您需要

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

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


我应该相信哪一个?还是我遗漏了什么?

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


使用rpm安装软件包时,我们需要手动安装依赖项,而yum会自动安装。因此,在这种情况下,如果您只想列出软件包,请使用“rpm-qa”,或者如果您需要列出与之相关的所有软件包和依赖项,请使用“yum list installed”

,我的理解是:
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的列表(使用包
YUM-utils
中的
repoquery

$ 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

(另见问题)

非常感谢。这非常有帮助。