2011-11-18 110 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

相關問題