CentOS – bin / * MD5在不同主机之间有所不同

我有一堆运行CentOS 5.3 32位的服务器。 他们几乎同时使用相同的安装方法(CD或networking安装)安装。

我最近注意到其中一台主机有问题,在尝试validationRPM软件包时会报告如下错误:

[sagi@server3 ~]$ rpm -qV coreutils 2>&1| grep mkdir prelink: /bin/mkdir: at least one of file's dependencies has changed since prelinking S.?..... /bin/mkdir [sagi@server3 ~]$ 

这个链接是我第一次引起注意的。 它试图做任何types的RPM相关的操作往往会出现。 而且,verify命令报告mkdir包的大小不匹配,我不明白。

我试图在一些其他的服务器上运行相同的命令,并没有任何问题。 / bin / mkdir的大小和coreutils的版本在有问题的服务器和所有其他主机上是相同的,例如:

 [sagi@server3 ~]$ rpm -q coreutils coreutils-5.97-19.el5 [sagi@server3 ~]$ ls -l /bin/mkdir -rwxr-xr-x 1 root root 29852 Jan 21 2009 /bin/mkdir [sagi@server3 ~]$ [sagi@server4 ~]$ rpm -q coreutils coreutils-5.97-19.el5 [sagi@server4 ~]$ ls -l /bin/mkdir -rwxr-xr-x 1 root root 29852 Jan 21 2009 /bin/mkdir [sagi@server4 ~]$ 

但是每个主机上的/ bin / mkdir的MD5是不同的:

 server1 f62677e910d9a3fc3605be5e3e59bb4f /bin/mkdir server2 7678ac9fdf01a80e4dc45cb8a6929e2b /bin/mkdir server3 4fe934b9ebd16ba773cf347ebf803225 /bin/mkdir server4 24800902f32af19879ed5fda0f3ea9d0 /bin/mkdir server5 a0a02615022c7f607709792a5ceaad0e /bin/mkdir 

等等。 / bin / mkdir只是一个示例,我遇到了与我检查的每个实用程序相同的问题。

因此,我有两个问题:1.为什么同一个文件的MD5在不同的机器上是不同的? 2.上面提到的预链接信息可能是什么原因?

更新:我设法通过手动运行/etc/cron.daily/prelink脚本来摆脱prelink错误。 我还是不明白MD5不同的原因是什么。

引用prelink manpage:

prelink是一个修改 ELF共享库和ELFdynamic链接二进制文件的程序[…]

Prelink正是如此。 它通过dynamic链接到应用程序的所有库运行,并修改二进制文件,以便运行时链接过程更加高效。 所以如果你更新了一个链接库,那么你必须重新运行prelink。 警告只是让你知道这是事实。

顺便说一句,prelink有一个' – md5'选项,你可以使用。 该命令的输出在所有主机上应该是相同的。