我正在尝试在配置了chef-client的Ubuntu 12.04上使用gem install安装knife-cloudstack
插件,并且标题中出现错误。
>gem install knife-cloudstack
ERROR: Error installing knife-cloudstack:
gssapi requires Ruby version >= 1.9.1
所以我尝试安装apt-get install ruby1.9.3
,但仍然是同样的错误。
此外,ruby的版本显示为1.9.3
ruby --version ruby 1.9.3p0(2011-10-30修订版33570)[i686-linux]
为了更加困惑,当我运行sudo update-alternatives --config ruby
时,它显示输出为:
There are 2 choices for the alternative ruby (providing /usr/bin/ruby).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/ruby1.8 50 auto mode
1 /usr/bin/ruby1.8 50 manual mode
* 2 /usr/bin/ruby1.9.1 10 manual mode
Press enter to keep the current choice[*], or type selection number:
PS:最初*在选择中:0,我后来改为2。
现在ruby1.9.3在哪里?即使我安装了ruby1.9.3,为什么还要使用其他版本?有谁知道是什么导致了这个问题?
感谢。
答案 0 :(得分:2)
我在尝试安装刀架空间时遇到了同样的问题。问题源于@xdazz在评论中所说的内容
gem env说什么?
基本上,仅仅更新ruby的替代品还不够,但你必须为gem做这件事
sudo update-alternatives --config ruby
sudo update-alternatives --config gem
一旦gem env报告了正确版本的ruby,那么你很高兴去!
答案 1 :(得分:0)
该包名为1.9.1,因为这是ABI版本。
Ruby使用两种并行版本控制方案:`Ruby库 兼容版本'(此程序包为1.9.1),类似于a 库SONAME和'Ruby版本'(此软件包为1.9.3)。红宝石 Debian中的包使用Ruby库兼容性命名 版本,对于不遵循Ruby的用户来说有时会让人感到困惑 发展密切。这个包取决于ruby1.9.1包, 并提供1.9.3可执行文件和的兼容性符号链接 手册页到他们的1.9.1同行。
答案 2 :(得分:0)
删除其余版本:
apt-get purge ruby1.8
apt-get purge ruby
现在检查版本可用
~# update-alternatives --config ruby
替代红宝石有1种选择(提供/usr/bin/ruby
)。
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/ruby1.9.1 10 auto mode
* 1 /usr/bin/ruby1.9.1 10 manual mode
现在你可以安装knife-cloudstack。