我至少注意到Debian上的rubygems至少存在以下奇怪之处(在我的情况下为5.0 lenny):
$ sudo gem update --system ERROR: While executing gem ... (RuntimeError) gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.
这笔交易是什么?为什么debian的包装有所不同?
答案 0 :(得分:15)
请注意,我在下面写的内容最近发生了重大变化。 Debian Ruby团队或多或少地完全改进了他们的整个方法,包括但不限于他们的RubyGems包装。我不确定Debian 6,但是在之后的版本中,从Debian安装Ruby和RubyGems包应该是安全的,甚至可能是推荐的。显然,这也将逐渐渗透到Ubuntu中。
[编辑:最迟在Debian 7中已经过时了。]
混合到两个不同的包管理器通常是非常糟糕的想法。 Debian-Ruby团队尽力修补RubyGems,使其成为一个稍微不那么糟糕的想法。
此外,Debian有一套旨在保持系统一致的规则。 RubyGems 也有自己的一套规则。遗憾的是,这两套规则不兼容。因此,Debian-Ruby开发人员修补RubyGems以尊重 Debian的规则,而不是RubyGems的规则。将宝石从/usr/lib/ruby
移动到/var/lib
就是其中之一。
另一个问题是Debian稳定,稳定。这意味着Debian团队保证 整个系统(所有20000个软件包)的行为在发布期间永远不会更改。但RubyGems开发人员不会单独提供他们的错误修正,获得错误修复的唯一方法是升级到新版本,具有(可能)不同的行为。因此,Debian-Ruby开发人员不能仅仅修改RubyGems源代码,他们必须对1.3.7中的错误修正进行反向工程,并将它们应用于 1.3 /的版本,以确保向后兼容。 / p>
通常,您应该避免混合包管理器。要么将RubyGems用于所有东西(在这种情况下最好从源代码安装RubyGems而不是使用Debian软件包)或者使用APT代替所有东西,在这种情况下你可能会对DebGem感兴趣,这是Phusion的一项服务(Ruby Enterprise Edition和Phusion Passenger的制造商)为几乎所有Gems提供Debian和Ubuntu软件包。
答案 1 :(得分:3)
如果您想管理自己的红宝石环境,我可以看看RVM。这是让不同环境捕捉开发需求的好方法,因为让debian软件包管理全局ruby环境更明智。
答案 2 :(得分:1)
避免它变得异常和奇怪的最好方法是从源代码安装它。 (许多人建议在任何情况下这样做。)
对于1.9.2以上,从源代码安装Ruby非常容易。这可以让你获得宝石和其他一切,自动,完全集成。 (例如,安装了Rails gem后,您可以键入'ri field_for'来了解Rails中嵌套表单的所有内容。)
无论有没有RVM,它现在都是获取Ruby的最简单,最可靠的方式。无论如何,我的10c。