如何阻止rpmbuild自动在RPM包名末尾追加x86_64等架构标识
RPM构建File Not Found错误解决方案
根本原因
你遇到的报错和N-V-R末尾的架构标识无关,该后缀是RPM包的标准命名规范,二进制包带对应CPU架构、noarch包带noarch标识属于正常逻辑,不需要也无法移除。
报错的核心原因是:rpmbuild在%files阶段会从%{buildroot}(对应报错日志里的/root/xxxx/xxxx/xxx/xxx/work/BUILDROOT/ApplicationServer-10.2.0-3.x86_64/目录)下搜索你声明要打包的文件,你没有在SPEC的%install阶段将需要打包的/jboss目录放到该路径下,所以触发文件未找到错误。
可行解决方案
- 第一步:在你的SPEC文件中补充
%install阶段逻辑,将待打包的jboss目录复制到%{buildroot}下的对应路径,示例如下:
%install # 确保buildroot根目录存在 mkdir -p %{buildroot}/ # 替换./jboss为你实际构建环境中已准备好的jboss目录所在路径 cp -r ./jboss %{buildroot}/
- 第二步:保留你当前的
%files段配置即可,/jboss路径会自动匹配%{buildroot}/jboss目录完成打包。 - 如果你确认该包不需要依赖特定CPU架构,可以保留
BuildArch: noarch配置,打包后生成的noarch包可以在任意架构的RHEL系统上安装。 - 如果你是通过Ant任务调用rpmbuild构建(从报错日志的任务标签可以看出),需要额外检查Ant配置中是否正确将jboss目录提前放到了rpmbuild的构建工作目录中,避免
%install阶段复制时找不到源文件。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

