10
I am currently using chef to install the RPM JDK package but the problem is that it does it every single time even if the package is already downloaded and installed. I tried finding an option for checking before installing but there wasn't any. Is there a way to get around this such that I can skip packages that are already installed? Debian's package management skips already installed packages by default, but RPM package manager doesn't seem to do that.
[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)
The recipe is show below:
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