由于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
这就是问题所在:
当我尝试通过执行
来声明版本> =时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 这是一旦我进入流浪盒并且从yum做了一个--show-duplicatelicates,它被列为有效版本:
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
我的问题是:厨师是否以某种方式运行与我在机器上实际拥有的不同的回购?为什么我的cmd在框中显示了与Chef正在使用的不同的Java版本?
答案 0 :(得分:2)
首先,我们需要回顾一下,找出包名与版本的关系。以1:java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64 : OpenJDK Runtime Environment
为例,包名称为java-1.8.0-openjdk
,版本为1:1.8.0.121-1.b13.el6.x86_64
,更常见的是1.8.0.121-1.b13
。实际上没有名为java
的包,它是Yum中的一个魔术别名来做正确的事情,但由于我们直接查询包信息数据库,别名会混淆Chef。
所以你想要的更像是这样:
package 'java-1.8.0-openjdk' do
version '1.8.0.121-1.b13'
end
或类似的东西。