$ 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
Run Code Online (Sandbox Code Playgroud)
这也适用于其他宝石,而不仅仅是nokogiri.我在Ruby 1.8.7上并/opt/ruby-enterprise-1.8.7-2010.02/bin/ruby在/usr/bin安装系统Ruby(1.8.6)之前设置了我的$ PATH .
$ 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
Run Code Online (Sandbox Code Playgroud)
您的sudo命令很可能会更改您的PATH变量.尝试sudo gem env,你可以验证这一点.作为解决方案,您可以尝试这样做:
sudo env PATH=$PATH gem install ...
Run Code Online (Sandbox Code Playgroud)
另见这里进一步讨论:
sudo改变路径 - 为什么?
作为一种解决方法,您还可以:
sudo su -m
Run Code Online (Sandbox Code Playgroud)
使用-m修饰符保留环境以获取根提示符.然后从该根提示符执行gem安装.