即使在指定有效版本时,Chef也不会获取java包
当我试图在一个流浪者2.0.2的盒子上生成centos/6图像时,由于Chef 13中发生了一个错误,我撞到了头 我的任务非常基本:我正在尝试安装版本为1.8.0的java openjdk,并且使用的yum_包如下所示:即使在指定有效版本时,Chef也不会获取java包,java,vagrant,chef-infra,centos6,openjdk,Java,Vagrant,Chef Infra,Centos6,Openjdk,当我试图在一个流浪者2.0.2的盒子上生成centos/6图像时,由于Chef 13中发生了一个错误,我撞到了头 我的任务非常基本:我正在尝试安装版本为1.8.0的java openjdk,并且使用的yum_包如下所示: yum_package "java" do flush_cache [ :before ] arch 'x86_64' version "java-1.8.0-openjdk" action :install end 这里有一个陷阱: 如果我不指定版本,我将
yum_package "java" do
flush_cache [ :before ]
arch 'x86_64'
version "java-1.8.0-openjdk"
action :install
end
这里有一个陷阱:
- 如果我不指定版本,我将获得JavaOpenJDK1.5.0
- 当我指定版本时,如上面的代码所示,我将得到“没有适用于java的候选版本”
- 当我试图通过执行以下操作来声明版本>=时 yum_包“java>java-1.8.0-openjdk”do
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是否以某种方式运行了与我在机器上实际拥有的回购不同的回购协议?为什么框中的my cmd显示了厨师使用的不同java版本?因此,首先我们需要倒带一点,找出包名和版本。以
1:java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64:openjdk运行时环境
为例,包名为java-1.8.0-openjdk
,版本为1:1.8.0.121-1.b13.el6.x86_64
,更常见的名称为1.8.0.121-1.b13
。实际上没有名为java
的包,在Yum中它是一个magic-y别名,可以做正确的事情,但是这个别名会混淆Chef,因为我们直接查询包信息数据库
所以你想要的更像这样:
package 'java-1.8.0-openjdk' do
version '1.8.0.121-1.b13'
end
或者类似的东西。所以首先我们需要倒带一点,找出包名和版本。以
1:java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64:openjdk运行时环境
为例,包名为java-1.8.0-openjdk
,版本为1:1.8.0.121-1.b13.el6.x86_64
,更常见的名称为1.8.0.121-1.b13
。实际上没有名为java
的包,在Yum中它是一个magic-y别名,可以做正确的事情,但是这个别名会混淆Chef,因为我们直接查询包信息数据库
所以你想要的更像这样:
package 'java-1.8.0-openjdk' do
version '1.8.0.121-1.b13'
end
或者类似的东西。您是否尝试将
1.8.0.121-1.b13.el6.x86_64
或1.8.0.161-3.b14.el6_9
作为版本属性传递给java yum资源?另外,尝试不使用el6.x86_64
。是的,仍然没有运气。我已经尝试了包名的所有变体(甚至是devel名称,只是为了确认它不是包)。似乎“package”的主厨运行只是转到另一个回购。您是否尝试将1.8.0.121-1.b13.el6.x86_64
或1.8.0.161-3.b14.el6_9
作为版本属性传递给java yum资源?另外,尝试不使用el6.x86_64
。是的,仍然没有运气。我已经尝试了包名的所有变体(甚至是devel名称,只是为了确认它不是包)。似乎不知何故,大厨为了“套餐”而跑去了另一家回购公司。仍然不接受这个建议,一直尝试到b14,然后从其余的中一块一块地添加。。确实有些奇怪,因为它应该可以工作:包“java-1.8.0-openjdk”do version“1.8.0.161-3.b14”end您可能需要完整的1.8.0.161-3.b14.el69
。我忘了我们是怎么做到的,14号主厨的情况也在发生变化。仍然不接受这个建议,一直尝试到b14,然后从其余部分一块一块地添加。。确实有些奇怪,因为它应该可以工作:包“java-1.8.0-openjdk”do version“1.8.0.161-3.b14”end您可能需要完整的1.8.0.161-3.b14.el69
。我忘了我们是怎么做到的,而且在14号主厨中也发生了变化。