centos – 为什么用yum安装相同的包两次不给我相同的文件?

我面临的情况:我设置了一台CentOS 5.9机器,应尽可能接近另一台CentOS 5.9机器的副本,但不是克隆机器.使用yum,我(尽可能)安装了目标机器上也安装在源计算机上的所有软件包(如安装的yum list和rpm -qa所报告的).之后我使用md5deep来查找目标机器上仍然缺失的文件.我发现丢失的文件比我预期的要多得多,从而发现了我当前的问题.

在目标和&源程序包traceroute-3:安装了2.0.1-6.el5.i386(安装了yum list).在两台机器上repoquery –info –show-duplicates traceroute仅列出该版本的软件包,并告诉我它可以在base-repository中找到.在两台机器上,rpm -ql traceroute-2.0.1-6.el5.i386列出了相同的文件.在两台机器上rpm -V traceroute-2.0.1-6.el5.i386告诉我安装进行顺利(没有文件修改/丢失).快速查看traceroute-2.0.1-6.el5.i386.rpm只显示二进制文件(/ bin / traceroute),符号链接和文档,所以我不希望在安装该软件包时进行编译(但是我不是RPM专家,它只是快速查看,而不是彻底的检查). file / bin / traceroute告诉我/ bin / traceroute:ELF 32位LSB可执行文件,Intel 80386,版本1(SYSV),用于GNU / Linux 2.6.9,动态链接(使用共享库),在两台机器上都被剥离. / bin / traceroute在两台机器上具有相同的大小.

然而,当我在两台机器上执行md5sum / bin / traceroute时,我会得到不同的结果. xxd&差异显示几十个字节不同,差异似乎在实际代码中(尚未对它们进行反汇编,但更改的部分不是人类可读的字符串). traceroute只是一个随机的例子,/ bin,/ sbin&中有几十个不同的文件. / lib目录下.

知道发生了什么事吗?我总是认为只要编译/编辑不是安装的一部分,安装相同的包两次就会产生完全相同的文件.至少我希望rpm -V会告诉我有关被篡改过的文件.如果yum有一个设施告诉我它从哪个存储库下载了RPM文件会有所帮助,但据我所知,这个工具在我的yum版本中不存在(3.2.22).要清楚:repoquery没有告诉我从哪个软件包下载了一个软件包,它只告诉我它可用的位置.如果在2个或更多启用的存储库中提供相同的包,则repoquery将列出所有包.百胜可以决定它想要哪个重复项,它似乎不会在任何日志文件中记录此决定.

我之前在RHEL发行版上遇到了这个问题.比我聪明的人确定了行为的来源:prelink

要对其进行测试,请在先前已识别出不同哈希值的系统上运行以下命令并比较输出.

/usr/sbin/prelink -y /bin/traceroute | md5sum

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native