使用 rpm2cpio 提取 rpm 后,文件成为目录



我正在 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 -qlpv package-name.rpm

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

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

LD_LIBRARY_PATH设置为

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

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

好吧,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.

最新更新