我有一个breakfast
包Requires
toast
,有bacon
,和eggs
。重要的是,breakfast
只需要一个eggs
实现就可以成为一顿均衡的膳食。
包。scrambled-eggs
包Provides
eggs
也是如此fried-eggs
。在任何情况下都不应scrambled-eggs
与 一起安装fried-eggs
,即使没有breakfast
。
如果只有两种烹饪鸡蛋的方法,那么解决方案就是增加Conflicts: fried-eggs
包装scrambled-eggs
,反之亦然。然而,烹饪鸡蛋的方法有很多,其中一些甚至还不为人所知,而一种新的烹饪鸡蛋的方法可能并不熟悉所有其他烹饪鸡蛋的方法。
有趣的是,对于 RPM 版本 4.11.3,似乎可以让每个包都同时具有Provides: eggs
和Conflicts: eggs
,但这种行为似乎没有记录。事实上,文档似乎表明它不应该起作用:
冲突基本上是与需要相反的。如果存在匹配的包,则无法安装该包。无论冲突:标签是在已安装的包上还是在将要安装的包上,都没有关系。
我可以在未来版本的 RPM 中依赖上述提供/冲突行为吗?或者,我还能如何解决这个问题?
答案1
简单回答:
这与“功能”无关。
“提供”——通常列出提供的文件(完整路径)和“标签”(烤面包、培根、鸡蛋)。“标签”(让我们这样解释)应该是特定的东西所独有的,而不是像 MTA 之类的功能。
当不允许使用同名包的多个版本或“提供”匹配时,就会发生冲突。
基本上,你不应该将“提供”解释为“功能”。这就是想法。