Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使在指定有效版本时,Chef也不会获取java包_Java_Vagrant_Chef Infra_Centos6_Openjdk - Fatal编程技术网

即使在指定有效版本时,Chef也不会获取java包

即使在指定有效版本时,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 这里有一个陷阱: 如果我不指定版本,我将

当我试图在一个流浪者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
这里有一个陷阱:

  • 如果我不指定版本,我将获得JavaOpenJDK1.5.0
  • 当我指定版本时,如上面的代码所示,我将得到“没有适用于java的候选版本”
  • 当我试图通过执行以下操作来声明版本>=时

    yum_包“java>java-1.8.0-openjdk”do

我将得到许多可用选项,并且yum将安装java 1.5,因为这是它发现的第一个选项(听起来有点令人惊讶):

我甚至将版本设置为文件的全名:java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9.x86_64,一旦我进入vagrant框并从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是否以某种方式运行了与我在机器上实际拥有的回购不同的回购协议?为什么框中的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号主厨中也发生了变化。