2013-03-14 70 views
5

我試圖安裝霧燈的寶石在廚師的食譜,但這樣的創業板安裝失敗廚師執行過程中安裝本地擴展包後,寶石

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。

注意:手動安裝軟件包不是一種選擇,因爲我們希望對新節點進行完全自動化。

回答

7

爲什麼不嘗試在資源收集階段的開始安裝的依賴關係,這裏提到:OPSCODE wiki: Run Resources from the Resource Collection

所以你的食譜看起來像:

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" 
+0

謝謝,這是訣竅! – vervas 2013-03-15 14:44:03

+0

你也可以安裝一個軟件包列表: '%w {libxslt-dev libxml2-dev} .each do | pkg | P =包pkg做 行動:什麼 結束 p.run_action(:安裝) end' – Brett 2013-07-29 10:34:19

0

好像你已經做那。食譜按順序執行,所以你應該很好。

在您的日誌中,您只顯示廚師嘗試安裝fog時發生的情況。你是否證實lib包的安裝在這之前不會出現?你可能已經弄錯了包名,或者你以前需要更新包管理器的緩存。

+0

我不包括在此之前,日誌,因爲包命令尚未運行。對我來說,它看起來像是在資源收集階段安裝了gem,而在執行階段安裝了軟件包之後,所以這就是問題出現在恕我直言的原因。 – vervas 2013-03-15 14:34:34