Tôi hiện đang sử dụng đầu bếp để cài đặt gói RPM JDK nhưng vấn đề là nó thực hiện nó mỗi lần ngay cả khi gói đã được tải xuống và cài đặt. Tôi đã cố gắng tìm một tùy chọn để kiểm tra trước khi cài đặt nhưng không có bất kỳ. Có cách nào để có được xung quanh này như vậy mà tôi có thể bỏ qua các gói đã được cài đặt? Quản lý gói của Debian bỏ qua các gói đã được cài đặt theo mặc định, nhưng trình quản lý gói RPM dường như không làm điều đó.Làm thế nào để kiểm tra đầu bếp cho gói RPM và sau đó cài đặt?
[Tue, 23 Oct 2012 10:34:32 -0500] INFO: Processing remote_file[/var/chef/cache/jdk-1.6-u30-linux-amd64.rpm] action create_if_missing (sun_java::default line 18)
[Tue, 23 Oct 2012 10:34:36 -0500] INFO: Processing package[jdk-1.6-u30-linux-amd64.rpm] action upgrade (sun_java::default line 25)
[Tue, 23 Oct 2012 10:37:15 -0500] INFO: Processing bash[update-alternatives java] action nothing (sun_java::default line 40)
Các công thức là hiển thị bên dưới:
urlVersion = "1."+node["sun_java"]["version"].sub(/[u]/, "-u")
node.default["sun_java"]["rpm_url"] = "http://***/#{urlVersion}/jdk-#{urlVersion}-linux-#{node["sun_java"]["arch"]}.rpm"
#Check that we are using the .rpm file because of the recent change
if File.extname(File.basename(node["sun_java"]["rpm_url"]))!=".rpm"
raise "You must use the jdk*.rpm file to install the Sun JDK. You can get it from the jdk*-rpm.bin file by running the command './jdk*-rpm.bin -x'"
end
javaRPM = File.basename(node["sun_java"]["rpm_url"])
remote_file "#{Chef::Config[:file_cache_path]}/#{javaRPM}" do
action :create_if_missing
source node["sun_java"]["rpm_url"]
mode "0755"
backup false
end
package javaRPM do
action :install
source "#{Chef::Config[:file_cache_path]}/#{javaRPM}"
options "--nogpgcheck" # sun/oracle doesn't sign their RPMs o_O
notifies :run, "bash[update-alternatives java]", :immediately
end
javaHomeFolder = "/usr/java/jdk1.#{node["sun_java"]["version"].sub(/[u]/, ".0_")}"
jdkFolder = "#{javaHomeFolder}/bin"
slaveString = ""
node["sun_java"]["update_slaves"].each do |java_bin|
slaveString = slaveString + "--slave \"/usr/bin/#{java_bin}\" \"#{java_bin}\" \"#{jdkFolder}/#{java_bin}\" "
end
bash "update-alternatives java" do
action :nothing
code <<-EOH
update-alternatives --install "/usr/bin/java" "java" "#{jdkFolder}/java" 1 #{slaveString}
update-alternatives --set java #{jdkFolder}/java
EOH
end
#Remove old environment then notify new environment to be created
ruby_block "delete_environement" do
block do
editBashrc = Chef::Util::FileEdit.new("/etc/profile")
editBashrc.search_file_delete_line(/^.*#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
#create environment of root user
execute "create_environment" do
user "root"
command "echo -e '#JAVA_HOME environment settings\n#Auto-generated by Chef Cookbook sun_java\nexport JAVA_HOME=#{javaHomeFolder}' >> /etc/profile"
end
Bạn có thể hiển thị một phần công thức của bạn nơi bạn gọi những mục đó không? – jstim
@jstim Tôi đã thêm công thức. – noMAD