如何创建支持重叠安装的 rpm B 文件的 rpm A?

How to create rpm A which support overlapping of installed rpm B files?

我想创建 rpm A,我的要求是每当我安装 rpm A 时,它都会替换一些已安装的 rpm B 的文件。

为此我们在 debian 中使用了

Provides: pkg C
Conflicts: pkg C
Replaces: pkg C

替换整个包,强制删除它们。

如何在 rpm 规范文件中执行此操作。

如果您希望 RPM B 消失,那么是的,同样的事情“Provides”(让其他寻找 B 的 RPM 开心)和“Conflicts”(强制卸载B).

如果你想让B留下来,除非你能做一些深奥的事情,否则你就不走运了。最简单的方法是执行类似 myorg-common 的操作,其中包含这些文件,然后是 myorg-amyorg-b,它们相互冲突但都需要 myorg-common(并相互提供)。

有2个解。

  1. 重叠不在支持的 rpm 规范中,但我们可以使用命令行选项 rpm A --replacefile

  2. 在 RPM A 规范文件中使用 Obsoletes: 来删除旧包或冲突包,并在 RPM A 中添加 Provides: 以使 RPM B 满意。

    注意:对于选项 2 rpm -i RPM A --> 不会废弃软件包。我们必须使用 yum 安装 RPM A 或 rpm -U RPM A