在厨师执行期间在本机扩展包之后安装gem

虽然在安装本机软件包之前安装了gem,但我尝试在大厨配方中安装雾gem,因此gem安装失败

package "libxslt-dev" package "libxml2-dev" chef_gem "fog" 

这是输出

 [Thu, 14 Mar 2013 13:04:30 +0000] INFO: Processing chef_gem[fog] action install (ebs4000::update_volumes line 23) [Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Running exception handlers [Thu, 14 Mar 2013 13:04:52 +0000] FATAL: Saving node information to /var/cache/chef/failed-run-data.json [Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Exception handlers complete [Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Gem::Installer::ExtensionBuildError: chef_gem[fog] (cookbook::recipe line 4) had an error: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb checking for libxml/parser.h... no ----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. ----- *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir ... --with-pkg-config --without-pkg-config Gem files will remain installed in /var/lib/gems/1.8/gems/nokogiri-1.5.6 for inspection. Results logged to /var/lib/gems/1.8/gems/nokogiri-1.5.6/ext/nokogiri/gem_make.out 

我知道厨师资源的通知属性,但仍然可以正常运行。

那么我怎么能真正强制执行命令首先安装本机包然后在同一个运行中安装gem。

注意:手动安装软件包不是一种选择,因为我们希望新节点完全自动化。

为什么不尝试在资源收集阶段开始时安装依赖项,如下所述: OPSCODE wiki:从资源集合运行资源

所以你的食谱看起来像:

 xsltdev = package "libxslt-dev" do action :nothing end xmldev = package "libxml2-dev" do action :nothing end xsltdev.run_action(:install) xmldev.run_action(:install) chef_gem "fog" 

看起来你已经这样做了。 食谱按顺序执行,所以你应该很好。

在日志中,您只显示从Chef尝试安装fog的位置发生的事情。 您是否已经validation过lib软件包的安装在此之前没有出现? 您可能得到了包名错误,或者您之前需要更新包管理器的缓存。