2013-03-10 114 views
3

安裝紅寶石寶石使用廚師10.24.0,包括databasecookbook時,錯誤執行對資源 'chef_gem [MySQL的]' 行動'install` - 通過廚師獨奏

include_recipe "mysql::server" 
include_recipe "database::mysql" 

mysql寶石安裝失敗,具有以下的輸出:

[2013-03-10T19:54:29+00:00] INFO: Processing chef_gem[mysql] action install (mysql::ruby line 36) 

================================================================================ 
Error executing action `install` on resource 'chef_gem[mysql]' 
================================================================================ 

NoMethodError 
------------- 
undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0> 

Cookbook Trace: 
--------------- 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file' 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/database/recipes/mysql.rb:20:in `from_file' 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb:11:in `from_file' 

Resource Declaration: 
--------------------- 
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb 

36: chef_gem "mysql" 

Compiled Resource: 
------------------ 
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file' 

chef_gem("mysql") do 
    provider Chef::Provider::Package::Rubygems 
    action :install 
    retries 0 
    retry_delay 2 
    package_name "mysql" 
    cookbook_name :mysql 
    recipe_name "ruby" 
end 


================================================================================ 
Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb 
================================================================================ 

NoMethodError 
------------- 
chef_gem[mysql] (mysql::ruby line 36) had an error: NoMethodError: undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0> 

Cookbook Trace: 
--------------- 
    /tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb:36:in `from_file' 
    /tmp/vagrant-chef-1/chef-solo-1/cookbooks/database/recipes/mysql.rb:20:in `from_file' 
    /tmp/vagrant-chef-1/chef-solo-1/cookbooks/scafandru/recipes/database.rb:11:in `from_file' 

Relevant File Content: 
---------------------- 
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/mysql/recipes/ruby.rb: 

29: include_recipe "build-essential" 
30: include_recipe "mysql::client" 
31: 
32: node['mysql']['client']['packages'].each do |mysql_pack| 
33: resources("package[#{mysql_pack}]").run_action(:install) 
34: end 
35: 
36>> chef_gem "mysql" 
37: 

[2013-03-10T19:54:31+00:00] ERROR: Running exception handlers 
[2013-03-10T19:54:31+00:00] ERROR: Exception handlers complete 
[2013-03-10T19:54:31+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out 
[2013-03-10T19:54:31+00:00] FATAL: NoMethodError: chef_gem[mysql] (mysql::ruby line 36) had an error: NoMethodError: undefined method `last' for #<Gem::AvailableSet:0x00000002b25be0> 
Chef never successfully completed! Any errors should be visible in the 
output above. Please fix your recipes so that they properly complete. 

試圖減少可能導致安裝失敗的所有變量,我丟棄database食譜,並在約束到RubyGem安裝10 recipe

include_recipe "mysql::server" 
include_recipe "mysql::ruby" 

但是錯誤是等價的。

同樣適用於簡單的gem_packageinstall

gem_package 'mysql' do 
    options "--no-ri --no-rdoc" 
end 

我的想法,任何人都可以請提供一些線索到這個?

回答