当有多个选项时,YUM 如何决定哪个软件包是依赖项的最佳安装候选者?

当有多个选项时,YUM 如何决定哪个软件包是依赖项的最佳安装候选者?

我有一个需要与 openjdk 11 和 oracle java 11 兼容的包。我正在尝试创建一个可以依赖于 openjdk java 11 或 oracle java 11 的元包:

我的 openjdk 元包规范是:

Name:       openjdk-11-adapter
Version:    0
Release:    0
Epoch:      0
Summary:    NA
License:    NA

Provides: java-11-metapackage
Requires: jre-11 >= 11

%description
%prep
%build
%install
%files

oracle java 元包规范是:

Name:       oracle-11-adapter
Version:    0
Release:    0
Epoch:      0
Summary:    NA
License:    NA

Provides: java-11-metapackage
Requires: jre  >= 2000:11

%description
%prep
%build
%install
%files

所以现在我的包可以依赖java-11-metapackage并且依赖于任一版本。当我安装它时,我希望yum会安装可用的 java。

实际发生的情况是,当我通过 yum 安装我的软件包时,我知道可以jre-11通过yum 安装java-11-openjdk,但 yum 总是会尝试安装oracle-11-adapter并抱怨没有任何东西可以满足jre >= 2000:11依赖关系。肯定openjdk-11-adapter是众所周知的,但被忽略了。

我的问题是,为什么 yum 会忽略可满足的openjdk-11-adapter,而尝试安装不可满足的oracle-11-adapter?它如何确定安装是否合适?

我注意到,如果我重命名oracle-11-adapteraaaoracle-11-adapter, yum 将按预期运行并安装其依赖关系可以得到满足的 java 适配器,但对于我来说,这感觉太老套了,无法将其投入生产。

相关内容