拥有yum版本库 – 使用Oracle JDK进行奇怪的软件包命名

我刚刚在我们的一台服务器上通过createrepo创build了一个自定义YUM存储库,并让其他服务器意识到这一点。 我在存储库中有三个RPM:

 [foo@one repository]$ ls jdk-7u4-linux-x64.rpm jdk-7u79-linux-x64.rpm jdk-8u65-linux-x64.rpm repodata 

现在当我search可用的包时,我得到以下输出:

 [foo@two ~]$ sudo yum list available jdk* Available Packages jdk.x86_64 2000:1.7.0_79-fcs jdk1.8.0_65.x86_64 2000:1.8.0_65-fcs 

有些服务器应该已经有了Java 8,有些服务器还需要更新并运行Java 7.为了顺利升级,我将configurationAnsible来安装某个Java包,具体取决于他正在与哪个节点通话。

当然,我可以说在Java 7服务器上安装jdk ,并在Java 8服务器上安装jdk1.8.0_65 ,但这似乎有点危险。

现在我的问题是:为什么包含在Java 8 rpm中的版本,为什么在Java 7中被忽略? 有没有办法让软件包名称中显示的版本7?

这并不奇怪,这是甲骨文决定select名字的方式。

对于1.7版本,jdk软件包名称是“jdk”,它们具有设置为2000和各种版本(1.7.0_79-fcs,1.7.0_25-fcs) 的epoch Tag 。

这样你就可以对软件包进行更新,并通过执行“yum install jdk”来安装软件包

从1.8开始,他们决定为每个版本使用不同的软件包名称。 所以包名叫“jdk1.8.0_65”,时代是“2000”,版本是“1.8.0_65-fcs”。

这样你就不能再安装一个“标准”包(jdk)了,你需要知道它的名字:“yum install jdk1.8.0_65”。 好处是你可以安装多个jdks并使用你想要的。