Error executing action `install` on resource 'chef_gem[mysql]' – installing ruby gem through Chef Solo

StackOverflow https://stackoverflow.com/questions/15328369

Pergunta

Using Chef 10.24.0, when including the database cookbook,

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

the mysql gem fails to install, with the following output:

[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.

Attempting to reduce the all variables that could cause the installation to fail, I discarded the database cookbook, and constrained to the RubyGem installation in the mysql::ruby recipe

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

but the error was equivalent.

Same applies for the simplest gem_package install:

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

I'm out of ideas, can anyone please shed some light into this?

Foi útil?

Solução

After downgrading to the latest pre-2.0 version (1.8.5) of RubyGems, everything works fine.

This issue will most likely be addressed in RubyGems 2.0.3.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top