$ 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
答案 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。
我的解决方案是卸载旧版本。不是最优雅,但我不需要旧版本。
祝你好运,我希望你能够卸载旧版本。