繁体   English   中英

Chef-Client尝试在Windows上安装Java,但它已经安装

[英]Chef-Client tries to install Java on Windows but it is already installed

我是Chef的新手,想要在Windows机器上安装Java。

我正在使用一个随时可用的Java手册

所以我写了一个包装食谱,正如另一个问题所述

我添加了java-cookbook-dependencies并使用了以下属性

属性/ java.rb

normal['java']['jdk_version'] = '7'
normal['java']['install_flavor'] = 'windows'
normal['java']['windows']['url'] = 'http://myurl/java/jdk-7u75-windows-x64.exe'

因此,在上传食谱并将其添加到运行列表之后,Java已安装并可用。 但每当我运行chef-client时,它都会尝试再次从文件中安装JDK。

所以我的问题:

我是否缺少一些配置来检查已安装的版本? 根据我的理解,这应该在给定的食谱中完成 ,但我不确定是不是。

我也尝试声明一个包名,但这并没有改变任何东西。

normal['java']['windows']['package_name'] = 'OracleJDK7u75'

这里用刀开始厨师客户后的(相关)输出:

WindowsPC [2015-04-10T14:38:06+02:00] INFO: Processing remote_file[c:/chef/cache/jdk-7u75-windows-x64.exe]action create (java::windows line 45)
WindowsPC [2015-04-10T14:38:08+02:00] INFO: Processing windows_package[OracleJDK7u75] action install (java::windows line 71)
WindowsPC [2015-04-10T14:38:09+02:00] INFO: Installing windows_package[OracleJDK7u75] version latest
WindowsPC [2015-04-10T14:38:09+02:00] INFO: Starting installation...this could take awhile.
WindowsPC
WindowsPC ================================================================================
WindowsPC Error executing action `install` on resource 'windows_package[OracleJDK7u75]'
WindowsPC ================================================================================
WindowsPC
WindowsPC Mixlib::ShellOut::ShellCommandFailed
WindowsPC ------------------------------------
WindowsPC Expected process to exit with [0, 42, 127], but received '1603'
WindowsPC ---- Begin output of start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% ----
WindowsPC STDOUT:
WindowsPC STDERR:
WindowsPC ---- End output of start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% ----
WindowsPC Ran start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% returned 1603
WindowsPC
WindowsPC Cookbook Trace:
WindowsPC ---------------
WindowsPC c:/chef/cache/cookbooks/windows/libraries/windows_package.rb:109:in `install_package'
WindowsPC c:/chef/cache/cookbooks/windows/libraries/windows_package.rb:31:in `block in <class:WindowsCookbookPackage>'
WindowsPC
WindowsPC Resource Declaration:
WindowsPC ---------------------
WindowsPC # In c:/chef/cache/cookbooks/java/recipes/windows.rb
WindowsPC
WindowsPC  71: windows_package node['java']['windows']['package_name'] do
WindowsPC  72:   source cache_file_path
WindowsPC  73:   checksum node['java']['windows']['checksum']
WindowsPC  74:   action :install
WindowsPC  75:   installer_type :custom
WindowsPC  76:   options "/s #{additional_options}"
WindowsPC  77: end
WindowsPC
WindowsPC Compiled Resource:
WindowsPC ------------------
WindowsPC # Declared in c:/chef/cache/cookbooks/java/recipes/windows.rb:71:in `from_file'
WindowsPC
WindowsPC windows_cookbook_package("OracleJDK7u75") do
WindowsPC   provider Chef::Provider::WindowsCookbookPackage
WindowsPC   action [:install]
WindowsPC   retries 0
WindowsPC   retry_delay 2
WindowsPC   default_guard_interpreter :default
WindowsPC   declared_type :windows_package
WindowsPC   cookbook_name "java"
WindowsPC   recipe_name "windows"
WindowsPC   source "c:/chef/cache/jdk-7u75-windows-x64.exe"
WindowsPC   installer_type :custom
WindowsPC   options "/s "
WindowsPC   package_name "OracleJDK7u75"
WindowsPC   timeout 600
WindowsPC   success_codes [0, 42, 127]
WindowsPC end
WindowsPC
WindowsPC [2015-04-10T14:38:14+02:00] INFO: Running queued delayed notifications before re-raising exception
WindowsPC [2015-04-10T14:38:14+02:00] ERROR: Running exception handlers
WindowsPC [2015-04-10T14:38:14+02:00] ERROR: Exception handlers complete
WindowsPC [2015-04-10T14:38:14+02:00] FATAL: Stacktrace dumped to c:/chef/cache/chef-stacktrace.out
WindowsPC [2015-04-10T14:38:14+02:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: windows_package[OracleJDK7u75] (java::windows line 71) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0, 42, 127], but received '1603'
WindowsPC ---- Begin output of start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% ----
WindowsPC STDOUT:
WindowsPC STDERR:
WindowsPC ---- End output of start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% ----
WindowsPC Ran start "" /wait "c:\chef\cache\jdk-7u75-windows-x64.exe" /s  & exit %%ERRORLEVEL%% returned 1603
ERROR: Failed to execute command on     WindowsPC return code 1   

先感谢您

Bohne

因此,正如我们已经弄明白的那样,java在第一次运行时安装,现在我们得到错误,当我们再次尝试安装它时。

可能性1:

Windows软件包资源来自opscode windows cookbook ,在README中写有:

请注意 - 为了正确的幂等性,资源的package_name应与在程序包安装期间创建的卸载数据中的“DisplayName”注册表值相同。 确定地找到正确的“DisplayName”值的最简单方法是在计算机上安装软件包,并在以下注册表项下搜索卸载信息:

 HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall HKEY_LOCAL_MACHINE\\Software\\Wow6464Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall 

我安装了java 7u72并找到了一个注册表项,Windows中存储了有关安装的信息:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{64A3A4F4-B792-11D6-A78A-00B0D0170720}

Windows cookbook尝试将Registry中的DisplayName值与资源的package_name匹配。 在我的例子中,它是“Java SE Development Kit 7 Update 72(64-bit)”。 我猜你的情况应该是“ Java SE Development Kit 7 Update 75(64-bit) ”而不是“OracleJDK7u75”。 所以你可能会尝试改变你的

normal['java']['windows']['package_name'] = 'Java SE Development Kit 7 Update 75 (64-bit)'

可能性2:

我有自己的java食谱在Windows上安装java,我没有遵循windows_package命名约定。 我的java重新安装每个厨师运行。 与windows_package声明的区别在于我有以下选项:

/qn

这意味着:“安静,没有用户界面”。 而“/ s”似乎没有任何意义。 您可以通过在命令行中运行来查看所有可用参数:

jdk-7u75-windows-x64.exe /?

看起来像Java包安装错误,而不是厨师的问题。

看到:

我建议通过手动运行包来重现没有厨师的问题。 走着瞧吧。

对不起,不是一个Windows家伙,也许其他人知道更多关于这个问题。

从我在食谱中看到的内容看来,你是正确的,并且没有检查Java食谱中的内容。 这是我发现在Windows上安装的食谱的相关部分:

windows_package node['java']['windows']['package_name'] do
  source cache_file_path
  checksum node['java']['windows']['checksum']
  action :install
  installer_type :custom
  options "/s #{additional_options}"
end

为了防止它在已经存在的情况下执行,您需要添加“only_if”或“not_if”属性来检查安装是否已经发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM