你好,
在调查某个 RHEL 5 实例上的意外行为时,我发现了一个令人恼火的事实:/usr/lib/libz.so.1.2.3
虽然 RPM 包报告为相同,且具有相同的构建日期,但某些 RHEL 5 实例上的文件大小却不同。我自己的 RHEL 包zlib-1.2.3-3.i386.rpm
以及客户站点上的一个安装包的大小为libz.so.1.2.3
75284 字节:
-rwxr-xr-x 1 root root 75284 19. Jul 2006 /usr/lib/libz.so.1.2.3
在另一个具有相同软件包版本的 RHEL 5 实例上,相同的文件有 73836 字节:
-rwxr-xr-x 1 root root 73836 Jul 19 2006 /usr/lib/libz.so.1.2.3
使用以下方式提取 rpm 文件
rpm2cpio zlib-1.2.3-3.i386.rpm | cpio -idv
共享库创建时的大小为 73836 字节,因此我认为这个大小是正确的。但是,大多数其他安装中的相同文件的大小为 75284 字节。
有人知道为什么会这样吗?
问候,斯蒂芬
答案1
大概预链接。
答案2
您可以使用以下命令来确定 RPM 提供的文件是否已在文件系统上修改:
rpm -qVv zlib.i386
它会产生类似这样的结果:
[msavona@admina03:~]$ rpm -qVv zlib.i386
........ /usr/lib/libz.so.1
........ /usr/lib/libz.so.1.2.3
........ /usr/share/doc/zlib-1.2.3
........ d /usr/share/doc/zlib-1.2.3/README
其中句点代表:文件大小、模式、md5 校验和、符号链接、设备、用户、组、修改时间
如果你看到类似这样的内容:
S.5..... /usr/lib/libz.so.1.2.3
然后,RPM 提供的文件和文件系统上的文件大小和 MD5 校验和会有所不同。
如果文件系统上的文件确实不同,那么某些外部因素(RPM 管理之外的因素)就改变了此文件。
不管怎样,在 RHEL5 系统(zlib-1.2.3-3.i386 包)上,我的文件如下所示(来自 rpm -q --dump zlib.i386):
/usr/lib/libz.so.1.2.3 73836 1153298282 02864132ee9f24adcf3502be355c633b 0100755 root root 0 0 0 X