使用厨师安装Java 7,无法让它工作

时间:2013-11-05 20:54:42

标签: java chef

我有一个包含一个食谱的包装食谱,recipes / default.rb可以读取以下内容:

include_recipe "apt"

node.override[:java][:jdk_version] = '7'

include_recipe "java"

我有来自社区网站的apt和java食谱。我只使用这个包装配方运行刀具引导。

当我收敛节点时,它会安装Java 6而不是Java 7.我觉得我有一些明显缺失的东西,但我无法弄明白。不应该使用node.override来覆盖默认的jdk_version为6吗?

2 个答案:

答案 0 :(得分:3)

使用“我不是厨师专家”来验证我的回答......但是,我认为问题在于Chef中的“嵌套属性”。我认为你不能只是继续推翻这个版本,因为在剥离了你的可爱配方可能出错的所有可能的东西之后,我发现了这个:

http://lists.opscode.com/sympa/arc/chef/2012-10/msg00265.html

在设置默认jdk版本后,还有一些其他属性正在设置。如果你看这里:

http://community.opscode.com/cookbooks/java/source

您将看到使用该默认版本设置default['java']['openjdk_packages'],并且openjdk配方(可能是选择的“install_flavor”)仅查看该属性。它不直接在jdk_version中读取。有趣的是,java :: oracle配方(以及java :: oracle_i386和java :: oracle_rpm)直接在版本中读取,因此您的初始尝试将适用于此。

我会尝试根据您的特定平台设置其中一个版本:

Redhat/CentOS: node.override[:java][:openjdk_packages] = ["java-1.7.0-openjdk", "java-1.7.0-openjdk-devel"]
Debian/Ubuntu: node.override[:java][:openjdk_packages] = ["openjdk-7-jdk"]

其他“platform_family”选项可在此处找到:https://github.com/opscode-cookbooks/java/blob/master/attributes/default.rb

答案 1 :(得分:3)

以下是我如何使用包装食谱。

我必须将此语句添加到attributes / default.rb:

override[:java][:openjdk_packages] = [
  "openjdk-7-jdk", "openjdk-7-jre-headless"
  ]

我尝试在此位置添加jdk_version,但它无效。我尝试在包装器食谱中添加此语句(带有node.override),但它也不起作用。

Here描述了为什么会出现这种情况。