%config(noreplace) 会出错

问题描述 投票:0回答:1

我正在编译 Fedora 的内核 6.4.9,并在这一行出错:

%config(noreplace) /etc/modprobe.d/*-blacklist.conf\
说“找不到文件”。
当我删除这一行时,编译进展顺利。当 BUILDROOT 中的该文件夹中有文件时,编译也很好。
有没有办法处理这个异常?

makefile redhat fedora rpm
1个回答
0
投票

RPM 规范

%files
部分中的这一行假设在
%install
脚本完成后,确实至少有一个文件与由
%{buildroot}/etc/modprobe.d/*-blacklist.conf
的 RPM 宏扩展形成的 glob 相匹配。如果没有,rpm 构建将会失败(尽管实际的内核构建已经成功,甚至达到了这一点)。我不清楚为什么这种期望没有得到满足,但我认为这与您对规范所做的任何更改有关。

有办法处理这个异常吗?

手柄,没有。 避免,是的。

如果您尝试构建不包含任何 modprobe 黑名单的内核 RPM,请删除有问题的 glob,或将其注释掉。在这种情况下,请注意问题中该行的尾随

\
可能是行继续字符,因此如果删除整行,您所做的更改将比您想象的更大。

如果您正在尝试构建一个包含 modprobe 黑名单的内核 RPM,那么请找出它们没有被生成的原因,并修复它。

您不需要猜测哪些情况适用——至少不需要从一次尝试到下一次构建相同的 rpm 进行猜测——因为 rpm 构建是可重现的。然而,为了获得最大的可重复性,请考虑安装“模拟”实用程序并使用它来执行构建(并且不要将此“模拟”与任何旨在进行单元测试的 API 模拟框架混淆)。

如果您想更深入,那么 RPM 规范语言包含条件指令和有限支持 (

rpmbuild
) 命令行选项,除此之外,还有完全可编程的宏。但我认为你不需要参与其中任何事情。

© www.soinside.com 2019 - 2024. All rights reserved.