1

我在 RHEL-6.4 上提取一个 rpm 包。我正在使用 rpm2cpio 命令,如下所示:

rpm2cpio package-name.rpm | cpio -u -i -d ---quiet 2>&1

上述命令在 fakeroot v1.12.4 环境下运行。(cpio(GNU cpio)2.10)执行上述命令后,如果我使用file命令检查文件 tpye,它将文件显示为目录。

我使用检查了 rpm 的内容

rpm -qlpv package-name.rpm

它将所有文件显示为文件,将目录显示为目录。

但是,我注意到如果 iunset LD_LIBRARY_PATH然后使用file命令检查文件类型,它显示的所有数据都与rpm -qlp.

LD_LIBRARY_PATH 设置为

/opt/tools/wh/dtd/RHE-5/fakeroot/1.12.4/lib64/libfakeroot

为什么LD_LIBRARY_PATH设置时文件被标记为目录?

4

1 回答 1

0

好了,rpm2cpio 解压了包含目录结构的存档。因此存档中的 /usr/bin/foo 变为:

d /usr
d   /bin/
f      foo 

所以 usr 确实是目录。但是 /usr/bin/foo 是文件(它确实是我工作站上的文件)。当然,如果您设置了 LD_LIBRARY_PATH 某些内容(并且您没有共享什么内容),那么它可以指向修改任何系统库和任何系统调用的目录。所以结果可以是任何东西。如果不知道您的本地设置,就很难分辨。

注 1:您可以从 rpmdevtools 包中调用 rpmdev-extract。它更舒适。

注意 2:我--queryformat perms在支持的选项中看不到任何类似的东西,但你可以-qlpv

于 2016-03-15T09:28:21.520 回答