2014-06-21 1 views
0

나는 아래 코드의 도움으로 자바를 설치하려고하지만 기본적으로/usr/java/디렉토리에 설치됩니다. 예를 들어 별도의 디렉토리에 설치하고 싶습니다/u01/app.요리사 요리법에 자바에 대한 다른 설치 경로를 제공

레시피

# Remove old environment then notify new environment to be created 
ruby_block "delete_environement" do 
    block do 
    editBashrc = Chef::Util::FileEdit.new("/home/oracle/.bash_profile") 
    editBashrc.search_file_delete_line(/^.*#{node['java']['home']} environment settings.*$/) 
    editBashrc.search_file_delete_line(/^.*#Auto-generated by Chef Cookbook sun_java.*$/) 
    editBashrc.search_file_delete_line(/^.*export JAVA_HOME=.*$/) 
    editBashrc.write_file 
    end 
    action :create 
end 

remote_file "#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm" do 
    source "http://#######/java/jdk-7u51-linux-x64.rpm" 
    mode "0755" 
end 

rpm_package "javaRPM" do  
    source :"#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm" 
    only_if {::File.exists?("#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm")} 
    owner :oracle 
    action :install 
end 

# update oracle bash profile ~/.bash_profile 

execute "create_environment" do 
    user "oracle" 
    command "echo -e '#{node['java']['home']} environment settings\n#Auto-generated by Chef Cookbook oracle_java\nexport JAVA_HOME=#{node['java']['home']}' >> ~/.bash_profile" 
    command "echo -e '#{node['java']['home']} environment settings\n#Auto-generated by Chef Cookbook oracle_java\nexport PATH=$PATH:#{node['java']['home']}/bin' >> ~/.bash_profile" 
    command "source ~/.bash_profile" 
end 

file "javaRPM-cleanup" do 
    path "#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm" 
    action :delete 
end 

답변

0

이 문제는 execute 자원의 이해입니다. 내가 설명한 바와 같이 this post :

요리사는 명령 속성의 마지막 값만 사용합니다. Chef는 컴파일과 실행이라는 두 단계로 실행되기 때문입니다.

따라서 해당 순서 (source ~/.bash_profile)의 마지막 명령 만 실행됩니다.

+0

실행 방법에 대해 설명해 주셔서 감사합니다 :)하지만 나는 아직도/usr/bin 디렉토리에서 원하는 디렉토리로 java의 설치 경로를 변경하는 방법을 모르겠습니다. – user3763218