“gem install”需要安装Ruby版本> = 1.8.7

时间:2011-07-06 19:23:16

标签: ruby rubygems

$ gem -v
1.8.5
$ ruby -v
ruby 1.8.7 (2010-04-19 patchlevel 253) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2010.02

$ sudo gem install sanitize
ERROR:  Error installing sanitize:
    nokogiri requires Ruby version >= 1.8.7

这也适用于其他宝石,而不仅仅是nokogiri。我在Ruby 1.8.7上并且已经设置我的$ PATH以在安装系统Ruby(1.8.6)的/opt/ruby-enterprise-1.8.7-2010.02/bin/ruby之前包含/usr/bin

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.5
  - RUBY VERSION: 1.8.7 (2010-04-19 patchlevel 253) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /opt/ruby-enterprise-1.8.7-2010.02/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/ruby-enterprise-1.8.7-2010.02/bin

$ which ruby
/opt/ruby-enterprise-1.8.7-2010.02/bin/ruby
$which gem
/opt/ruby-enterprise-1.8.7-2010.02/bin/gem

2 个答案:

答案 0 :(得分:7)

你的sudo命令很可能会改变你的PATH变量。试试sudo gem env即可验证。作为解决方案,您可以尝试这样做:

sudo env PATH=$PATH gem install ...

另见这里进一步讨论:
sudo changes PATH - why?

作为一种解决方法,您也可以这样做:

sudo su -m

使用-m修饰符保留环境来获取根提示符。然后从该根提示符执行gem安装。

答案 1 :(得分:0)

那么你的sudo命令看起来很好(即,那里没有短划线所以它应该重用你的环境),但你可以尝试sudo which gem只是为了确定。它有时取决于Unix / Linux的版本。

我曾经追踪过这样的事情。我的路径(和你的路径)是正确的,但有一些内部的宝石要么忽略了路径,要么正在寻找“标准”目录首先,从而找到旧版本的ruby。

我的解决方案是卸载旧版本。不是最优雅,但我不需要旧版本。

祝你好运,我希望你能够卸载旧版本。