我希望服务器 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
:
对它进行排序,使以大写字母开头的包出现在小写字母之前:
rpm -qa | LC_ALL=C sort
使用
sed
命令删除包版本号:rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
对于命令的输出yum
:
删除前两个标题行(
Loaded plugins
和Installed Packages
):Loaded plugins: etckeeper, fastestmirror Installed Packages
我们可以
sed
为此使用:yum list installed | sed '1,2d;'
我们还可以用来
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/