两个 RPM 怎么会成为相同功能的互斥提供者?

两个 RPM 怎么会成为相同功能的互斥提供者?

我有一个breakfastRequires toast,有bacon,和eggs。重要的是,breakfast只需要一个eggs实现就可以成为一顿均衡的膳食。

包。scrambled-eggsProvides eggs也是如此fried-eggs。在任何情况下都不应scrambled-eggs与 一起安装fried-eggs,即使没有breakfast

如果只有两种烹饪鸡蛋的方法,那么解决方案就是增加Conflicts: fried-eggs包装scrambled-eggs,反之亦然。然而,烹饪鸡蛋的方法有很多,其中一些甚至还不为人所知,而一种新的烹饪鸡蛋的方法可能并不熟悉所有其他烹饪鸡蛋的方法。

有趣的是,对于 RPM 版本 4.11.3,似乎可以让每个包都同时具有Provides: eggsConflicts: eggs,但这种行为似乎没有记录。事实上,文档似乎表明它不应该起作用:

冲突基本上是与需要相反的。如果存在匹配的包,则无法安装该包。无论冲突:标签是在已安装的包上还是在将要安装的包上,都没有关系。

我可以在未来版本的 RPM 中依赖上述提供/冲突行为吗?或者,我还能如何解决这个问题?

答案1

简单回答:

这与“功能”无关。

“提供”——通常列出提供的文件(完整路径)和“标签”(烤面包、培根、鸡蛋)。“标签”(让我们这样解释)应该是特定的东西所独有的,而不是像 MTA 之类的功能。

当不允许使用同名包的多个版本或“提供”匹配时,就会发生冲突。

基本上,你不应该将“提供”解释为“功能”。这就是想法。

相关内容