考虑一种情况,其中有不同的 rpm 提供相同的功能。一个假设的例子是让 Oracle JDK rpm、Oracle JRE rpm 和 OpenJDK rpm 在其 SPEC 文件的“Provides”字段中都列出了“java-env”。现在我们有了像 ant、groovy、maven 这样的 rpm,它们的 SPEC 文件中都将“Requires”字段设置为“java-env”。尝试安装 groovy 或 maven 时会安装什么?我们可以通过哪些方式控制安装哪些依赖项?我认为一种方法是将 Oracle JDK rpm、Oracle JRE rpm 和 OpenJDK 都放在不同的存储库中并在存储库上设置优先级,但是这样一来,由于我有几种此类冲突,存储库的数量可能会继续增长.
问问题
1263 次
1 回答
1
如果多个包提供相同的功能,则可以安装它们中的每一个。这主要是用户选择。正确完成软件包后,应该可以安装每个软件包(一次只能安装一个)。
需要环境的包甚至不会注意到安装或使用了哪一个。
在没有用户交互的情况下安装哪个包取决于包管理器。有的询问用户,有的选择首选,...
如果您需要一个特殊的 Java 版本,那么您应该需要该特定包,而不是需要通用包。这里的问题是另一个包可能需要另一个包,然后你就会遇到无法解决的冲突。所以最好总是使用 generic Requires
。
对于大多数系统,还可以安装多个 java 包。然后安装过程会选择最好的一个作为默认值(通过/etc/alternatives
机制)。
于 2013-04-24T08:08:17.893 回答