在CentOS Box上正确指定JAVA_HOME

时间:2014-03-27 17:49:28

标签: linux environment-variables chef java-home

在CentOS 6.5盒子上使用Vagrant和Chef,我有以下食谱:

chef.add_recipe "yum" 
chef.add_recipe "custom_java_cookbook" # simply installs the Oracle Java 7 RPM
chef.add_recipe "set_env_var"

总的来说,我的问题是如何正确指定JAVA_HOME以使用Oracle Java 7版本而不是yum安装的OpenJDK6。

set_env_var设置以下环境变量:

  • M2_HOME
  • GRADLE_HOME
  • JAVA_HOME

使用magic shell cookbook,我成功设置了前2个环境变量,但不是JAVA_HOME。但是,运行vagrant up --provision后,我的$JAVA_HOME设置为open-jdk6目录。

查看/etc/profile.d,我有2个shell脚本对应于设置JAVA_HOME

-jdk.sh # I'm guessing it's part of the yum cookbook. {export JAVA_HOME = openjdk6}
-JAVA_HOME.sh # Chef-created script: {export JAVA_HOME = jdk7_oracle_dir}

如何指定在JAVA_HOME下使用哪个/etc/profile.d环境脚本?

由于我的jdk.sh设置为openjdk6版本,JAVA_HOME.sh似乎赢了JAVA_HOME

1 个答案:

答案 0 :(得分:1)

如果您要通过自定义食谱/食谱自己设置JAVA_HOME,您应该删除相同食谱中的现有jdk.sh。类似的东西:

file "/etc/profile.d/jdk.sh" do
  action :delete
end

将它包装在支票中以便仅在绝对必要时应用(例如,如果文件存在,如果安装了yum,如果平台是您期望的等等)将是有用的。