CentOS - bin/* MD5 在相同主机之间不同

CentOS - bin/* MD5 在相同主机之间不同

我有一堆运行 CentOS 5.3 32 位的服务器。它们都是大约同时使用相同的安装方法(CD 或网络安装)安装的。

我最近注意到其中一台主机出现问题,在尝试验证 RPM 包时报告如下错误:

[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 ~]$

prelink 消息首先引起了我的注意。在尝试执行任何类型的 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.上面提到的prelink信息可能是什么原因造成的?

更新:我通过手动运行 /etc/cron.daily/prelink 脚本成功消除了预链接错误。但我仍然不明白 MD5 不同的原因是什么。

答案1

引用手册prelink页:

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

答案2

Prelink 正是这样做的。它会遍历动态链接到应用程序的所有库并修改二进制文件,以便运行时的链接过程更加高效。因此,如果您更新其中一个链接库,则必须重新运行 prelink。警告只是让您知道情况确实如此。

顺便说一句,prelink 有一个“--md5”选项可供您使用。该命令的输出在所有主机上都应该相同。

相关内容