我刚刚在我们的其中一台服务器上创建了一个自定义 YUM 存储库createrepo
,并让其他服务器知道它。存储库中有三个 RPM:
[foo@one repository]$ ls
jdk-7u4-linux-x64.rpm jdk-7u79-linux-x64.rpm jdk-8u65-linux-x64.rpm repodata
现在,当我搜索可用的包时,我得到以下输出:
[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。为了顺利升级,我将配置 Ansible 以根据其正在通信的节点安装特定的 Java 包。
当然我可以说jdk
在 Java 7 服务器上安装,jdk1.8.0_65
在 Java 8 服务器上安装,但这似乎有点冒险。
现在我的问题是:为什么 Java 8 rpm 中包含该版本,而 Java 7 中却省略了该版本?有没有办法在软件包名称中明确显示版本 7?
答案1
这并不奇怪,这是 Oracle 选择名称的方式。
对于 1.7 版本,jdk 包名称为“jdk”,它们有epoch 标签设置为 2000 和各种版本 (1.7.0_79-fcs、1.7.0_25-fcs)。
这样,您就可以更新软件包并通过执行“yum install jdk”来安装该软件包
从 1.8 开始,他们决定为每个版本使用不同的软件包名称。因此,软件包名称现在是“jdk1.8.0_65”,纪元是“2000”,版本是“1.8.0_65-fcs”。
这样你就不能再安装“标准”包(jdk),你需要知道它的名字:“yum install jdk1.8.0_65”。优点是你可以安装多个 jdk 并使用你想要的那个。