简体   繁体   English

无法使用Chef-Solo在vagrant虚拟CentOS机器上安装Rails gem

[英]Cannot install Rails gem on vagrant virtual CentOS Machine using Chef-Solo

I am trying to setup Rails environment on CentOS 6.3 64bit using Vagrant and Chef-Solo. 我正在尝试使用Vagrant和Chef-Solo在CentOS 6.3 64位上设置Rails环境。

Rails cannot be installed when using chef, with error message, 使用厨师时无法安装Rails,并显示错误消息,

Mixlib::ShellOut::CommandTimeout: rbenv_gem[rails] (main::default line 21) had an error: Mixlib::Shell
Out::CommandTimeout: command timed out:

How do I solve this? 我该如何解决这个问题?

env ENV

  • OS : Mac OS X 10.8.2 操作系统:Mac OS X 10.8.2
  • Virtual Box : 4.2.12 虚拟盒子:4.2.12
  • vagrant : 1.1.5 流浪汉:1.1.5
  • chef : 11.4.0 厨师:11.4.0
  • knife solo : 0.3.0 刀独奏:0.3.0

my steps 我的步骤

1.create vagrant VM 1.创造流浪汉VM

$ vagrant box add centos https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box`
$ vagrant init centos
$ vagrant up

2.create chef repository and install chef to VM 2.创建Chef存储库并将chef安装到VM

$ knife solo init chefrepo
$ knife solo prepare vagrant@192.168.33.10 # vagrant VMs IP

3.import public cookbook from OpsCode 3.从OpsCode进口公共食谱

$ knife cookbook site vendor rbenv 

this imports rbenv cookbook to chefrepo/cookbooks/rbenv 这导入rbenv食谱到chefrepo / cookbooks / rbenv

4.create my cookbook and modify default.rb 4.创建我的食谱并修改default.rb

$ knife cookbook create main -o site-cookbooks
$ vi site-cookbooks/main/recipes/default.rb


include_recipe 'rbenv::default'
include_recipe 'rbenv::ruby_build'

rbenv_ruby "2.0.0-p0" do
  global true
end

rbenv_gem "rails" do
  ruby_version "2.0.0-p0"
end

5.cook 5.cook

$ knife solo cook vagrant@192.168.33.10

then gets error as follows. 然后得到如下错误。

# Declared in /home/vagrant/chef-solo/site-cookbooks/main/recipes/default.rb:21:in `from_file'

rbenv_gem("rails") do
  provider Chef::Provider::Package::RbenvRubygems
  action :install
  retries 0
  retry_delay 2
  cookbook_name :main
  recipe_name "default"
  ruby_version "2.0.0-p0"
  package_name "rails"
  gem_binary "/opt/rbenv/shims/gem"
  version "3.2.13"
end


[2013-04-17T12:00:13+02:00] ERROR: Running exception handlers
[2013-04-17T12:00:13+02:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated
[2013-04-17T12:00:13+02:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-04-17T12:00:13+02:00] FATAL: Mixlib::ShellOut::CommandTimeout: rbenv_gem[rails] (main::default line 21) had an error: Mixlib::Shell
Out::CommandTimeout: command timed out:
---- Begin output of /opt/rbenv/versions/2.0.0-p0/bin/gem install rails -q --no-rdoc --no-ri -v "3.2.13" ----
STDOUT: 
STDERR: 
---- End output of /opt/rbenv/versions/2.0.0-p0/bin/gem install rails -q --no-rdoc --no-ri -v "3.2.13" ----

ERROR: RuntimeError: chef-solo failed. See output above.

manual install 手动安装

Rails can be installed by $ sudo gem install rails on VM. 可以通过$ sudo gem install rails在VM上$ sudo gem install rails This takes about 20mins or more. 这需要大约20分钟或更长时间。

I'm not sure what your environment restrictions are, but one potential solution is to use a different operating system. 我不确定您的环境限制是什么,但一种可能的解决方案是使用不同的操作系统。 I had a very similar problem with CentOS 6.3 and Vagrant a few weeks ago and spent literally days on it. 几个星期前我和CentOS 6.3和Vagrant有一个非常类似的问题,花了几天时间。 Once I switched to Ubuntu it was like cutting hot butter. 一旦我切换到Ubuntu就像切热的黄油一样。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM