【发布时间】:2022-01-05 07:41:04
【问题描述】:
我想创建 rpm A,我的要求是每当我安装 rpm A 时,它会替换一些已安装的 rpm B 的文件。
为此我们在 debian 中使用了
Provides: pkg C
Conflicts: pkg C
Replaces: pkg C
替换整个包,强制移除它们。
如何在 rpm 规范文件中执行此操作。
【问题讨论】:
我想创建 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-a 和 myorg-b,它们相互冲突,但都需要 myorg-common(并相互提供)。
【讨论】:
有两种解决方案。
重叠不在支持的 rpm 规范中,但我们可以使用命令行选项 rpm A --replacefile。
在 RPM A 规范文件中使用 Obsoletes: 删除旧包或冲突包,并在 RPM A 中添加 Provides: 以使 RPM B 满意。
注意:对于选项 2 rpm -i RPM A --> 不会废弃软件包。我们必须使用 yum install RPM A 或 rpm -U RPM A
【讨论】: