【问题标题】:RPM build failed - could not find any valid magic filesRPM 构建失败 - 找不到任何有效的魔法文件
【发布时间】:2021-08-22 11:24:46
【问题描述】:

我正在为我的一个项目生成 RPM,但在处理 RPM 时它显示如下错误,

file: could not find any valid magic files! 
file: could not find any valid magic files!
file: could not find any valid magic files! 
file: could not find any valid magic files!
file: could not find any valid magic files!
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars 
Processing files: DEV_SAMPLE-1.0-1.el7.x86_64 unknown, 0: Warning: using regular magic file `/bin/share/misc/magic' error: magic_load failed: could not find any valid magic files!

RPM build errors:
    magic_load failed: could not find any valid magic files!

操作系统:CentOS Linux 7.4,我的系统里已经有魔法文件了。 我该如何解决这个问题?

【问题讨论】:

    标签: rpm package-managers rpmbuild rpm-spec


    【解决方案1】:

    要执行某些操作,例如在可执行文件上运行 striprpmbuild 使用标准 Linux 命令 file。听起来您的安装方式已损坏;它使用所谓的“魔术文件”,其中包含有关如何根据内容识别不同文件的提示。您可以使用file $(which file) 尝试它,它应该说类似x86_64 ELF Executable

    您可以使用sudo rpm -V file 明确检查其安装。 (我现在不在 CentOS 机器上,所以无法确认这是软件包名称 - rpm -q --whatprovides $(which file) 可以告诉你我是否错了。)该命令应该返回 nothing;如果它显示任何文件,则它们可能已损坏或丢失。

    重新安装/修复您安装的filesudo yum reinstall file(或任何软件包,如果我错了)。

    【讨论】:

    • 剥离是对的,在 RPM 创建过程中,二进制文件被剥离以减小大小而不影响原始功能。 rpmbuild 使用宏 __os_install_post 中定义的内置压缩脚本来执行这些操作。我们只需要使用 %global __os_install_post %{nil} 来禁用它。谢谢
    • os_post_install 也做其他事情;这是解决它的一种方法。我会担心为什么 file 安装已损坏。
    • 基于警告 unknown, 0: Warning: using regular magic file /bin/share/misc/magic ,它正在尝试从路径 /bin/share/misc/magic 加载魔法文件,这不是默认安装的魔法文件路径。有什么线索吗?
    • 不知道,抱歉。 rpm -ql 应该显示它应该安装的文件。
    猜你喜欢
    • 2021-06-16
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多