我正在尝试安装knife-windows,但是当我运行gem install knife-windows时出现此错误:
ERROR: Error installing knife-windows: gssapi requires Ruby version >= 1.9.1.
我尝试安装RVM和1.9.3,但是我收到了这个错误,并退回:
/opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:900:in `report_activate_error': Could not find RubyGem chef (>= 0) (Gem::LoadError) from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate' from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:1276:in `gem' from /opt/vagrant_ruby/bin/knife:18
安装Chef服务器和安装服务器的正确方法是什么?用Ruby 1.9.x的刀?
上面的Vagrant框中的安装可能会将各种Ruby二进制文件放在默认的$PATH中,这意味着使用gem install将尝试将knife-windows gem安装到由Vagrant放置在那里的Ruby中.
为了进一步说明,Opscode为Chef和Chef Server提供的软件包包括他们自己独立的Ruby安装. Opscode这样做是因为Chef和Chef Server支持的平台都默认提供不同的(过时的)Ruby版本.
每天,与Chef Server的大多数交互都将通过API使用knife(或webui).刀和它的插件应该从像本地笔记本电脑这样的“工作站”系统中使用.如果Chef是安装Ruby的唯一原因,那么使用Chef package中嵌入的Ruby,它应该安装在本地系统上.安装程序适用于大多数主要平台,包括Ubuntu,Windows,OS X等.根据插件的不同,可能需要各种开发头和构建工具(gcc,make等).
对于它的价值,Chef Server当前“omnibus”包中的Ruby版本不是1.8.7.它可以在以下位置找到:
ubuntu@os-9348884648703137:~$/opt/chef-server/embedded/bin/ruby --version ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]
(撰写本文时的当前版本)
Chef客户端软件包中使用的Ruby版本通常更频繁地更新,因为客户端/工作站使用的需求比Chef Server更快. Chef客户端包中的嵌入式Ruby版本是:
% /opt/chef/embedded/bin/ruby --version ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin11.2.0]
Opscode计划在下一个版本中更新此版本,因此它可能与此站点的未来访问者显示的不同.另请注意,这来自“本地工作站”安装,而不是Chef服务器.