2014-03-24 35 views
3

我創造了2個食譜:java_kevin和maven_kevin:

食譜/ java_kevin /食譜/ default.rb

node.default['user'] = 'vagrant' 
node.default['user_home'] = '/home/' + node['user'] 
node.default['my_dir'] = node['user_home'] + '/my' 

node.default['vagrant'] = '/vagrant' 

node.default['java_home'] = node['my_dir'] + '/jdk1.7.0_51' 

# Install Java 7 RPM 
execute "install_oracle_java7" do 
    command "rpm -ivh --prefix=" + node['my_dir'] + " jdk-7u51-linux-x64.rpm" 
    cwd node['vagrant'] 
    creates node['java_home'] 
end 

magic_shell_environment 'JAVA_HOME' do 
    value node['java_home'] 
end 

magic_shell_environment 'PATH' do 
    value "$PATH:" + node['java_home'] + '/bin' 
end 

食譜/ maven_kmm /食譜/default.rb

node.default['user'] = 'vagrant' 
node.default['user_home'] = '/home/' + node['user'] 
node.default['my_dir'] = node['user_home'] + '/my' 

node.default['maven_download_dir'] = node.default['user_home'] + '/apache-maven-3.2.1-bin.tar.gz' 

# Download Maven 3.2.1 
remote_file node['maven_download_dir'] do 
    source "http://www.bizdirusa.com/mirrors/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz" 
    checksum "aaef971206104e04e21a3b580d9634fe" 
end 

execute "unpack_and_uncompress_maven" do 
    command "tar -zxvf " + node['maven_download_dir'] 
    cwd node['user_home'] 
    creates node['user_home'] + '/apache-maven-3.2.1' 
end 

execute "move_maven_to_my_dir" do 
    command "mv " + node['user_home'] + '/apache-maven-3.2.1' + " " + node['my_dir'] 
    cwd node['user_home'] 
    creates node['my_dir'] + '/apache-maven-3.2.1' 
end 

node.default['maven_home'] = node['my_dir'] + '/apache-maven-3.2.1' 

magic_shell_environment 'M2_HOME' do 
    value node['maven_home'] 
end 

magic_shell_environment 'PATH' do 
    value "$PATH:" + node['maven_home'] + '/bin' 
end 

根據條款寧,我只看到Maven的路徑是正確添加到$PATH

[[email protected] ~]$ echo $PATH 
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/my/apache-maven-3.2.1/bin:/home/vagrant/bin 

[[email protected] ~]$ which mvn 
~/rm/apache-maven-3.2.1/bin/mvn 

[[email protected] ~]$ which java 
/usr/bin/which: no java in (/usr/local/bin:/bin:/usr/bin:.... 

爲什麼JAVA_HOME不是最終$PATH項目的一部分?

回答

3

我相信magic_shell_environment會爲每個資源名稱(這裏是'PATH' - 檢查/etc/profile.d/PATH.sh)創建一個唯一的文件,並且每次文件都將被重新創建。這裏你的兩個食譜都在嘗試創建相同的文件。很可能第一個配方創建的PATH.sh文件被第二個配方覆蓋。

我不知道如何解決這個問題,使用magic_shell,但我相信這是你的問題「爲什麼」的答案。

請參閱https://github.com/customink-webops/magic_shell/blob/master/providers/environment.rb