2011-03-30 25 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 通过使用原始宝石。