2011-11-18 108 views
3

我尝试一些Ubuntu的服务器上安装了RubyInline:ZenTest需要的RubyGems版本〜> 1.8

sudo gem1.9.1 install RubyInline 
ERROR: Error installing RubyInline: 
     ZenTest requires RubyGems version ~> 1.8 


sudo ruby --version 
ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] 

什么是这个错误的原因是什么?我很困惑1.8的参考。这应该都是Ruby1.9.1。如何解决这个问题?

+0

什么'GEM1的输出.9.1 --version'? – Dogbert

+0

sudo gem1.9.1 --version 1.3.5 – maasha

+0

它讨论* Rubygems *的版本1.8,而不是* Ruby *的1.8版本。我感到惊讶的是,更多的人不会被类似版本号的类似命名包所困惑。 –

回答

6

~> 1.8的意思是“任何版本的RubyGems,只要它是1.8或更高,但小于2.0”。所以1.8.0,1.8.11,1.8.1001.9全部匹配,但是你的版本没有。

gem命令中的1.9.1并不意味着RubyGems的版本是1.9.1,而是它是随Ruby 1.9.1安装提供的版本。要找出你有什么版本的RubyGems,运行gem1.9.1 --version

要解决这个问题,你可以升级RubyGems的,或安装版本ZenTest的是与运行sudo gem1.9.1 install ZenTest --version "< 4.6" RubyGems的版本你有兼容的(假定ZenTest 4.5与您的RubyGems兼容)

+0

尝试运行旧的Rails 3项目时发生这种情况。我想你必须降级rubygems http://stackoverflow.com/questions/523993/how-do-you-downgrade-rubygems – Donato

3

短回答是运行

gem update --system 

对于长时间的答案,请参阅cypher的帖子上面。

+0

嗯,这是在Debian类型系统上被禁用。 – maasha

+2

啊,是的,我忘了那个。这是RVM真正开始发光的地方。我尽量避免使用特定于分发版的软件包来支持使用RVM。 – Eugene

+0

如果出现错误,“您没有写入/Library/Ruby/Gems/1.8目录的权限。”就像在我的Mac OS X上,你需要以root身份运行这个命令,所以命令是'sudo gem update --system' – SammyK

1

Bundler Documentation

的说明符〜>具有特殊的含义,由例如最佳示出的。 〜> 2.0.3与> = 2.0.3和< 2.1相同。

所以“〜> 1.8”引用表示任何版本的RubyGems < 1.9。

一个可能的解决办法是写你的扩展无了RubyInline:
how-to-create-a-ruby-extension-in-c-in-under-5-minutes

+0

“所以”〜> 1.8“引用表示任何版本的Ruby <1.9。” * Rubygems *,而不是* Ruby *。是的,它有两个类似的命名与相似的版本号相混淆! –

+0

哎呀,你是......固定的。 –

0
bundle update 

帮助对我来说,它更新ZenTest从4.6.2至4.11.1

相关问题