2013-03-14 27 views
5

Tôi cố gắng để cài đặt các viên ngọc sương mù trong một công thức đầu bếp mặc dù quá trình cài đặt ngọc xảy ra trước khi các gói bản địa đang được lắp đặt để cài đặt đá quý khôngCài đặt một viên ngọc sau khi các gói mở rộng tự nhiên trong quá trình thực đầu bếp

package "libxslt-dev" 
package "libxml2-dev" 

chef_gem "fog" 

này là đầu ra

[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 

Tôi biết thuộc tính thông báo của tài nguyên đầu bếp nhưng vẫn có thể chạy được tài liệu này đúng cách.

Vậy làm cách nào tôi có thể buộc thực thi lệnh đầu tiên cài đặt các gói gốc và sau đó là đá quý trong cùng một lần chạy.

Lưu ý: Cài đặt thủ công các gói không phải là một tùy chọn, vì chúng tôi muốn hoàn toàn tự động cho các nút mới.

Trả lời

7

Tại sao không thử cài đặt phụ thuộc vào đầu giai đoạn thu thập tài nguyên, như đã đề cập ở đây: OPSCODE wiki: Run Resources from the Resource Collection

Vì vậy, công thức của bạn sẽ trông như thế:

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

Cảm ơn, điều đó đã xảy ra! – vervas

+0

Bạn cũng có thể cài đặt danh sách các gói với: '% w {libxslt-dev libxml2-dev}. Do do | pkg | p = gói pkg làm hành động: không có gì kết thúc p.run_action (: install) end' – Brett

0

Nó có vẻ như bạn đã làm cái đó. Bí quyết được thực hiện theo thứ tự, vì vậy bạn nên được tốt.

Trong nhật ký, bạn chỉ hiển thị những gì đã xảy ra từ thời điểm đầu bếp cố gắng cài đặt fog. Bạn đã xác minh rằng cài đặt gói lib chưa xuất hiện trước đó chưa? Bạn có thể đã nhận được tên gói sai hoặc bạn cần cập nhật bộ nhớ cache của trình quản lý gói trước.

+0

Tôi chưa bao gồm nhật ký trước đó vì các lệnh gói chưa chạy. Đối với tôi, có vẻ như đá quý đang được cài đặt trong giai đoạn thu thập tài nguyên trong khi cài đặt gói trên giai đoạn thực hiện sau đó, vì vậy đây là lý do tại sao sự cố xảy ra IMHO. – vervas

Các vấn đề liên quan