rpm 报告的已安装软件包列表与 yum 报告的有所不同

rpm 报告的已安装软件包列表与 yum 报告的有所不同

我希望服务器 B 具有与服务器 A 完全相同的设置。服务器 A 和 B 具有相同的 Arch 和相同的硬件。

我的计划是列出服务器 A 上所有已安装的内容,并使用服务器 B 上的列表来安装它,例如:

yum -y install $(cat installed.txt)

在服务器 A 中,我应该使用:

rpm -qa > installed.txt

或者:

yum list installed > installed.txt  

这些列表似乎不同,我不知道为什么。

yum list installed有 930 行,rpm -qa有 895 行,有什么区别?

答案1

yum listinstalled 有 930 行,而 rpm -qa 有 895 行,有什么区别?

这可能只是格式差异。 yum list 会对您的终端大小进行一系列巧妙的包装。

您可能想要做的是使用:

# Run this on the master server
yum-debug-dump

# Run this on the new server, with the input from the above.
yum-debug-restore

答案2

可能有什么区别?

行数不同的主要原因是 生成的输出经过yum格式化,以便每个字段垂直排列(无论包名称和/或版本号的长度如何)。它通过使用两行列出此类包并用空格字符填充第二行以正确排列字段来实现此目的。以下输出(来自 CentOS 6 机器)显示使用两行来列出软件包device-mapper-persistent-data.x86_64

device-mapper-libs.x86_64         1.02.95-3.el6_7.4    @clearos-verified-updates
device-mapper-persistent-data.x86_64
                                  0.3.2-1.el6          @clearos
dhclient.x86_64                   12:4.1.1-49.P1.v6    @clearos-verified-updates

然而,这并不是仅有的原因,可以通过比较两个命令的输出来看出:

对于命令的输出rpm

  1. 对它进行排序,使以大写字母开头的包出现在小写字母之前:

    rpm -qa | LC_ALL=C sort
    
  2. 使用sed命令删除包版本号:

    rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
    

对于命令的输出yum

  1. 删除前两个标题行(Loaded pluginsInstalled Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    我们可以sed为此使用:

     yum list installed | sed '1,2d;'
    
  2. 我们还可以用来sed删除包列表的所有延续行(这些行以多个空格开头,以便所有包版本对齐)。

    yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
    

现在,我们可以使用该diff命令来比较两个文件的输出。以下是 CentOS 6 机器的结果:

# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey

结论

这表明rpm -qa还包括受信任来签署包的公钥的包列表,而该yum命令忽略了这些包。

答案3

yum list installed如果包名称和包版本很长,可以创建两行输出。

答案4

yum list installed给我输出如下。

pam_krb5.i386                        2.2.14-22.el5                     installed

现在,rpm -qa有以下要说的。

pam_krb5-2.2.14-22.el5

这两个命令都给我提供了与输出相同的行数。我会选择rpm -qa清单。

另外,从回答,我看到下面的信息。

有一个程序“rpm”,它专门操作要求操作的包,还有“yum”,这是一个更智能的管理系统,可以找到依赖项并下载 .rpm 文件,即使它们不在系统。

因此,区别可能在于yum解决了依赖项,但rpm已安装了所有依赖项,因此它提供了更完整的列表。

yum我看到和之间的实际区别rpm如下。

最突出的问题rpm是大多数人通常所说的状态依赖地狱。依赖于许多其他包的包会出现此问题,其中一些包还依赖于许多其他包。众所周知,您必须安装所有依赖项才能使程序正常工作。rpm无法自动为您执行此操作。它只能在安装所需的软件包之前检查是否安装了所有必需的软件包。对于大多数最初只想安装单个软件包的人来说,手动跟踪和安装每个依赖项是一项主要工作。

yum能够跟踪包的依赖关系并在安装用户想要安装的包之前安装它们。这简化了整个过程,因为您只需要知道要安装的软件包的名称,而不必担心所需的软件包是否已安装。在系统可用的存储库中搜索系统上找不到的包。

参考

http://www.difference Between.net/technology/difference- Between-yum-and-rpm/

相关内容