gpt4 book ai didi

vagrant - 即使指定了有效版本,Chef 也不会选择 java 包

转载 作者:行者123 更新时间:2023-12-01 19:57:48 26 4
gpt4 key购买 nike

尝试在 vagrant 2.0.2 盒子上生成 centos/6 镜像时,由于 Chef 13 中发生错误,我感到很头疼。

我的任务非常基本:我正在尝试安装版本 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: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

或类似的东西。

关于vagrant - 即使指定了有效版本,Chef 也不会选择 java 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48929374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com