RPM规范中“提供”冲突的解决方案

时间:2013-04-24 07:58:35

标签: conflict rpm yum rpm-spec package-management

考虑一种情况,即有不同的rpms提供相同的功能。一个假设的例子是让Oracle JDK rpm,Oracle JRE rpm和OpenJDK rpm都在其SPEC文件的“提供”字段中列出“java-env”。现在我们有像ant,groovy,maven这样的rpms,它们的SPEC文件中的“Requires”字段都设置为“java-env”。尝试安装groovy或maven时会安装什么?我们可以通过哪些方式控制安装依赖项?我认为一种方法是将Oracle JDK rpm,Oracle JRE rpm和OpenJDK全部放在不同的存储库中并在存储库中设置优先级,但是这样repos的数量可能会继续增长,因为我有几种这样的冲突

1 个答案:

答案 0 :(得分:1)

如果多个软件包提供相同的功能,则可以安装每个软件包。这主要是用户选择。当包正确完成后,应该可以安装每个包(一次只安装一个)。

需要环境的包装甚至没有注意到安装或使用了哪一个。

在没有用户交互的情况下安装哪个软件包取决于软件包管理器。有些人问用户,有些人选择首选的,...

如果您需要特殊的Java版本,那么您应该要求特定的包,而不是要求通用包。这里的问题是另一个包可能需要另一个包然后你有一个无法解决的冲突。所以最好总是使用泛型Requires

对于大多数系统,也可以安装多个java包。然后安装过程选择最好的一个作为默认值(通过/etc/alternatives机制)。