【问题标题】:File becomes directory after rpm extraction using rpm2cpio使用 rpm2cpio 提取 rpm 后文件变为目录
【发布时间】:2016-03-14 14:13:47
【问题描述】:

我在 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时文件被标记为目录?

【问题讨论】:

    标签: linux rpm cpio


    【解决方案1】:

    嗯,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

    【讨论】:

    • 同意-qlpv。我尝试了 --qf perms 和 -qlpv,但我错误地放置了 perms。
    • rpmdev-extract 在 red hat 上不可用,因此无法尝试。
    • 它是 rpmdevtools 软件包的一部分, RHEL/Centos 的一部分。见mirror.centos.org/centos/6/os/x86_64/Packages/…
    • 我用 fakeroot v1.20.2 测试过。它解决了这个问题。我可以回答我的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2015-04-17
    • 2021-06-14
    • 2014-12-11
    • 1970-01-01
    • 2011-08-02
    • 2015-02-24
    相关资源
    最近更新 更多