创建一个 RPM 来修改%config(noreplace)
另一个 RPM 安装的文件的正确方法是什么?
一般问题的具体实例:我们想要修改安装的存储库定义,almalinux-repos
以便定义指向baseurl
我们的内部镜像。因为存储库定义位于%config(noreplace)
中almalinux-repos
,所以我们可以通过多种方式修改它们。然而,我们也希望将我们的修改打包。
一个想法是创建一个新的包Obsoletes: almalinux-repos
。这建议使用almalinux-repos
as BuildRequires
,然后将其文件包含在 buildroot 中。它很容易Obsoletes
变坏,所以我们反对这种方法。
另一个想法是创建一个新包,Requires: almalinux-repos
然后用于%patch
修改其文件。
第二个问题:假设我们使用该%patch
机制,我们是否应该添加Supplements: almalinux-repos
到新包中,以便它自动包含在包解析中?
答案1
almalinux-repos
您的第二种方法存在一个问题,即在安装本地软件包之前您无法修改软件包中的文件。如果有修改,则有可能%patch
无法正确应用。
我的方法是不使用 RPM 文件,而是使用 Ansible 来确保感兴趣的配置文件中有正确的设置。还有很多其他的可能性——这种方法更像是一种固执己见的解决方案,而不是一个真正的解决方案。