我有一堆运行 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 ~]$
预链接消息是首先引起我注意的消息。在尝试执行任何类型的 RPM 相关操作时,它经常出现。而且,验证命令报告 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 的原因是什么。
Prelink 正是这样做的。它遍历所有动态链接到应用程序的库并修改二进制文件,以便运行时的链接过程更有效。因此,如果您更新其中一个链接库,则必须重新运行预链接。警告只是让你知道情况就是这样。
顺便说一句,prelink 有一个您可以使用的“--md5”选项。该命令的输出在所有主机上都应该相同。
引用手册
prelink
页: