我在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
它将所有文件显示为文件和目录。
但是,我注意到我是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
时文件被标记为目录?
答案 0 :(得分: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
。