2011-03-30 43 views
2

我想在只有Ruby 1.8.6的基於Fedora的發行版上安裝RubyGems。我下載了RubyGems的1.6.2包,解壓縮並運行是否可以在Ruby 1.8.6上安裝RubyGems?

$ ruby setup.rb 

它彈了有相當無用的錯誤消息:

./lib/rubygems/custom_require.rb:54: warning: parenthesize argument(s) for future version 
./lib/rubygems/custom_require.rb:57:in `require': undefined method `end_with?' for "no such file to load -- Win32API":String (NoMethod\ 
Error) 
    from ./lib/rubygems/config_file.rb:55 
    from ./lib/rubygems/custom_require.rb:36:in `gem_original_require' 
    from ./lib/rubygems/custom_require.rb:36:in `require' 
    from ./lib/rubygems/gem_runner.rb:8 
    from ./lib/rubygems/custom_require.rb:36:in `gem_original_require' 
    from ./lib/rubygems/custom_require.rb:36:in `require' 
    from setup.rb:25 

望着異常的源頭,似乎它首先嚐試:

require "etc" 
Etc.sysconfdir 

並且當拋出一個NoMethodError它試圖要求Win32API(我假定不存在在Linux)。

我猜這可能是因爲我有一箇舊版本的Ruby,但我找不到任何地方記錄的RubyGems版本要求。任何人都可以建議如何繼續這個?

回答

0

絕對可以在Ruby 1.8.6上安裝RubyGems,但不能安裝RubyGems 1.6.2。在RubyGems 1.4.0中支持Ruby 1.8.6。

你爲什麼試圖規避你的Linux發行版的包管理器?他們測試了他們運送的包裹之間的互操作性,正好是,以避免這種情況。

總的來說,混合不同的包管理系統並不是一個好主意。理想情況下,在使用Linux時,根本不應該使用RubyGems,因爲大多數發行版的包管理系統與RubyGems一樣好。只有在Windows或OSX等操作系統上才需要RubyGems,這些操作系統仍然停留在20世紀80年代。例如:我只使用Rails,RedCloth,RMagick,Rack,Redmine,Ruby Enterprise Edition,Phusion Passenger以及我需要的任何其他分發包。我甚至沒有安裝任何的RubyGems,無論是從分發軟件包還是來自源代碼。

但是,如果出於某種原因,您需要需要 RubyGems,那麼您應該將整個Ruby環境移出分發包管理器並自行管理它。只需安裝Rubinius,JRuby,IronRuby,YARV或任何你想要的任何版本和風格,從源代碼安裝最新版本的RubyGems(或者不要,因爲以上所有內容已經預裝了一個),並安裝所有你的Ruby庫作爲Gems。

正如在其他答案中指出的那樣,RVM可以提供幫助,但通常是不必要的,除非您想在同一臺計算機上管理多個Ruby安裝。

+0

我無法找到我的發行版本的rubygems。我實際上並沒有使用Fedora,而是基於它的修改版本,我不相信所有的標準軟件包都可用。無論是那個還是我都沒有把正確的魔法傳遞給yum。 – 2011-03-30 16:10:56

+0

我同意你的意見。如果您不需要安裝多個Ruby環境,則可能不需要RVM。但即使您只使用一個Ruby版本並需要使用rubygems,RVM也可以幫助您使用[named gem sets](http://rvm.beginrescueend.com/gemsets/basics/)來保持組織的有序性。解釋器(MRI,Rubinus,JRuby等)的安裝非常簡單。如果你不想從源代碼構建東西(RVM爲你下載,構建,安裝和管理紅寶石),這可能是一個重要的事情。 – 2011-03-30 19:07:52

+3

什麼?它與linux軟件包管理器比rubygems「更好」無關。他們完成不同的工作。 Apt,yum和朋友的目的是安裝系統當前指定的「穩定版」。 Rubygems旨在同時管理同一個gem的多個版本。當你安裝一個(比如說)rails應用程序的gem依賴項時,你不需要「穩定的版本」 - 你想要開發應用程序的確切版本。 (這就是捆綁軟件的用途。)說一個「更好」是誤解它們的互補目的。 – 2011-08-28 03:00:02

1

如何安裝RVM?然後,您可以輕鬆管理多個Ruby版本,也許可以安裝更新版本的Ruby。它工作得很好。

0

如果您只有Ruby版本1.8.5,則無法安裝大於1.3.5的RubyGems。 RubyGems至少需要安裝Ruby 1.8.6。

我的背景: - 我的CentOS Linux中安裝了RubyGems 1.3.5,因爲Ruby是1.8.6。 - 我在Mac OS X上做了什麼,其中帶有Ruby 1.8.7的 ,是從版本1.3升級gem 。5版本1.6.2 通過使用原始寶石。