linux - 在 CentOS Box 上正确指定 JAVA_HOME

标签 linux environment-variables chef-infra java-home

在 CentOS 6.5 机器上使用 Vagrant 和 Chef,我有以下 Recipe :

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 以在 yum 安装的 OpenJDK6 上使用 Oracle Java 7 版本。

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}

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

似乎 jdk.sh 胜过 JAVA_HOME.sh,因为我的 JAVA_HOME 设置为 openjdk6 版本。

最佳答案

如果您要通过自定义说明书/Recipe 自己设置 JAVA_HOME,您可能应该删除同一 Recipe 中现有的 jdk.sh。像这样的东西:

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

将其包装在检查中以仅在绝对必要时应用(即,如果文件存在、是否安装了 yum、是否是您期望的平台等)会很有用

关于linux - 在 CentOS Box 上正确指定 JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695397/

相关文章:

.net - .NET Windows 服务的 Linux Mono 等价物

chef-infra - 获取已部署的说明书版本

java - 在 Linux 中用 Java 编译 Cplex

linux - 在 Linux 中创建可执行文件

linux - 摆脱僵尸进程

windows - Windows XP 和 Vista+ 中 %ALLUSERSPROFILE% 的差异

java - 如何在maven应用程序中使用heroku环境变量绑定(bind)http服务器

Python os 库在 Windows 中看不到环境变量

chef-infra - 菜谱中的cookbook_name - TypeError : no implicit conversion of Symbol into String

chef-infra - Chef -STDERR : The python_package resource requires pip >= 6. 1.0,目前为10.0.0