我正在编译 Fedora 的内核 6.4.9,并在这一行出错:
%config(noreplace) /etc/modprobe.d/*-blacklist.conf\
说“找不到文件”。 RPM 规范
%files
部分中的这一行假设在 %install
脚本完成后,确实至少有一个文件与由 %{buildroot}/etc/modprobe.d/*-blacklist.conf
的 RPM 宏扩展形成的 glob 相匹配。如果没有,rpm 构建将会失败(尽管实际的内核构建已经成功,甚至达到了这一点)。我不清楚为什么这种期望没有得到满足,但我认为这与您对规范所做的任何更改有关。
有办法处理这个异常吗?
手柄,没有。 避免,是的。
如果您尝试构建不包含任何 modprobe 黑名单的内核 RPM,请删除有问题的 glob,或将其注释掉。在这种情况下,请注意问题中该行的尾随
\
可能是行继续字符,因此如果删除整行,您所做的更改将比您想象的更大。
如果您正在尝试构建一个包含 modprobe 黑名单的内核 RPM,那么请找出它们没有被生成的原因,并修复它。
您不需要猜测哪些情况适用——至少不需要从一次尝试到下一次构建相同的 rpm 进行猜测——因为 rpm 构建是可重现的。然而,为了获得最大的可重复性,请考虑安装“模拟”实用程序并使用它来执行构建(并且不要将此“模拟”与任何旨在进行单元测试的 API 模拟框架混淆)。
如果您想更深入,那么 RPM 规范语言包含条件指令和有限支持 (
rpmbuild
) 命令行选项,除此之外,还有完全可编程的宏。但我认为你不需要参与其中任何事情。