【发布时间】:2018-08-02 10:03:35
【问题描述】:
由于 Chef 13 在尝试在 vagrant 2.0.2 盒子上生成 centos/6 图像时发生错误,我头疼不已。
我的任务非常基本:我正在尝试安装 1.8.0 版本的 java-openjdk,并且我正在使用 yum_package,如下所示:
yum_package "java" do
flush_cache [ :before ]
arch 'x86_64'
version "java-1.8.0-openjdk"
action :install
end
这就是问题所在:
- 如果我不指定版本,我会得到java-openjdk 1.5.0。
- 当我指定版本时,如上面的代码所示,我会得到“没有可用于 java 的候选版本”。
-
当我尝试通过执行来声明版本时 >=
yum_package "java > java-1.8.0-openjdk" 做
我会得到很多可用的选项,并且 yum 会安装 java 1.5,因为它是它找到的第一个(这听起来有点令人惊讶):
WARN: yum_package[java >= java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9] matched multiple Provides for java >= java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9 but we can only use the first match: java-1.5.0-gcj. Please use a more specific version.
我什至已经将版本设置为文件的全名:java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9.x86_64一旦我进入 vagrant box 并从 yum 执行 --show-duplicates ,就会被列为有效版本:
yum search --showduplicates java-1.8.0-openjdk
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: mirror.hmc.edu
* epel: mirror.compevo.com
* extras: mirror.texas3006.com
* updates: centos.mirror.lstn.net
===================================================================== N/S Matched: java-1.8.0-openjdk ======================================================================
1:java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.131-0.b11.el6_9.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.141-2.b16.el6_9.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.144-0.b01.el6_9.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.151-1.b12.el6_9.x86_64 : OpenJDK Runtime Environment
1:java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9.x86_64 : OpenJDK Runtime Environment
更奇怪的是,一旦我进入盒子,我可以通过运行 yum install java 轻松安装 java jdk,它会正确选择 java 1.8.0:
root@localhost vagrant]# yum install java
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.mirror.ca.planethoster.net
* epel: ftp.cse.buffalo.edu
* extras: mirror2.evolution-host.com
* updates: centos.mirror.ca.planethoster.net
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.161-3.b14.el6_9 will be installed
我的问题是:Chef 是否以某种方式运行了与我在机器上实际拥有的不同的存储库?为什么我在框中的 cmd 显示的 java 版本与 Chef 使用的不同?
【问题讨论】:
-
您是否尝试将
1.8.0.121-1.b13.el6.x86_64或1.8.0.161-3.b14.el6_9作为版本属性传递给java yum 资源?另外,请尝试不使用el6.x86_64。 -
是的,还是没有运气。已经尝试了包名称的所有变体(甚至只是为了确认它不是包名称)。似乎以某种方式运行“包”的厨师只是去了另一个仓库。
标签: java vagrant chef-infra centos6 openjdk