我正在 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
.