You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跳过rpmbuild内核RPM包构建时的未打包文件检查?

解决内核RPM构建中「Checking for unpackaged file(s)」耗时检查的问题

我来帮你搞定这个头疼的耗时检查问题——之前你试的两种方法没用,是因为内核构建的RPM流程有特殊的处理逻辑,下面给你两个有效的解决方案,顺便解释下原因和包大小的关联:

有效的跳过方式

内核的binrpm-pkg目标在调用rpmbuild时,不会直接继承你全局的rpm配置,也不吃--nocheck那套,得用下面的方法:

方法1:通过环境变量直接传递参数

执行构建命令时,直接把跳过检查的定义通过RPMOPTS传给rpmbuild,一步到位:

make -j$(nproc) binrpm-pkg RPMOPTS="--define '_unpackaged_files_terminate_build 0' --define '_missing_doc_files_terminate_build 0'"

这个参数会强制让rpmbuild忽略未打包文件的检查,不会再跑那30分钟的扫描。

方法2:修改生成的spec文件(适合需要多次构建的场景)

如果需要重复构建,可以先找到内核构建过程中生成的kernel.spec文件(一般在~/rpmbuild/SPECS/目录下),在文件最开头添加两行:

%_unpackaged_files_terminate_build 0
%_missing_doc_files_terminate_build 0

之后再执行make binrpm-pkg,rpmbuild就会遵循这个配置跳过检查。

为什么之前的方法无效?

  • 修改~/.rpmmacros没用:内核构建脚本在调用rpmbuild时,会动态生成spec文件,并且可能覆盖全局的rpm配置,导致你加的那行定义被忽略了。
  • 加--nocheck无效:--nocheck是用来跳过RPM包的测试阶段的,而「Checking for unpackaged file(s)」属于rpmbuild的打包检查阶段,完全是两个不同的环节,所以这个参数对它根本不起作用。

关于RPM包大小差异的关联

你提到的allyesconfig和openSUSE配置的包大小差异,其实和这个耗时检查直接相关:

  • allyesconfig虽然开启了所有选项,但很多调试、开发类的选项不会被编译进最终可安装的包,打包的内容只有基础内核镜像和核心模块,所以体积小。
  • openSUSE的配置会开启大量实际使用的模块、固件、调试符号,甚至会打包内核头文件、文档等附加内容,文件数量多了好几倍,rpmbuild要检查的文件量自然大很多,这也是为什么这个检查在openSUSE配置下耗时更久的原因。

内容的提问来源于stack exchange,提问作者pevik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:19:29