代码之家  ›  专栏  ›  技术社区  ›  Yetanotherjosh

Debian上的RubyGems有什么交易?这是不同和奇怪的

  •  8
  • Yetanotherjosh  · 技术社区  · 14 年前

    我至少注意到Debian的Rubygems周围有以下奇怪之处(在我的例子中是5.0 Lenny):

    • 软件包进入不同的安装位置:/var/lib/gems vs/usr/lib/ruby/gems
    • Debian软件包是rubygems 1.3.6,将rubygems更新到最新版本(1.3.7)不起作用:
      $ 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.
    
    • 并不是所有的gem都像在其他系统上一样工作。例如,在安装phulsion passenger时,它没有检测到“rack”gem,即使它确实安装了。
    • 使用源tarball手动安装ruby gems并重新安装所有gems(to/usr/lib/ruby/gems),使我的问题消失了。

    怎么回事?为什么Debian的软件包不同?

    3 回复  |  直到 13 年前
        1
  •  15
  •   Jörg W Mittag    13 年前

    请注意,我在下面写的内容最近发生了很大的变化。DebianRuby团队或多或少对他们的整个方法进行了全面的改进,包括但不限于他们的RubyGems包装。我不确定Debian 6的版本 之后 从Debian安装Ruby和RubyGems包应该是安全的,甚至是推荐的。很明显,这也会渗透到Ubuntu。


    [编辑:以下内容最迟于Debian 7过期。]

    混合到两个不同的包管理器通常是 非常糟糕 想法。DebianRuby团队尽其所能地修补RubyGems,使其变得稍微不那么糟糕。

    另外,Debian有一套规则,旨在保持系统的一致性。鲁比吉姆 有自己的规则。不幸的是,这两套规则不兼容。所以,DebianRuby开发人员要尊重RubyGems 德比 规则而不是rubygems。从 /usr/lib/ruby /var/lib 就是其中之一。

    另一个问题是Debian稳定,好吧,稳定。这意味着Debian团队 保证 你的行为 整个的 系统,所有20000个包裹,将 从未 在释放期间更改。但是RubyGems的开发人员并不单独提供bugfix,获得bugfix的唯一方法是升级到一个新版本,具有(潜在的)不同的行为。因此,DebianRuby开发人员不能只接受未修改的RubyGems源,他们必须对1.3.7中的错误修复进行反向工程,并将其应用于 他们的 1.3.6版本,以确保向后兼容性。

    一般来说,您应该避免混合包管理器。要么对所有东西使用rubygems(在这种情况下,最好从源代码安装rubygems,而不是使用debian包),要么对所有东西使用apt,在这种情况下,您可能会感兴趣 DebGem 这是一个由phfusion公司(Ruby Enterprise Edition和phfusion Passenger的制造商)提供的服务,它为几乎所有的gem提供Debian和Ubuntu软件包。

        2
  •  3
  •   Cédric Darné    14 年前

    如果您想管理自己的Ruby环境,我可以看看 RVM . 让不同的环境满足您的开发人员的需求是一个很好的方法,因为让Debian包管理全局Ruby env更明智。

        3
  •  1
  •   Andy    13 年前

    避免它与众不同和奇怪的最好方法是从源代码安装它。(许多人建议无论如何都要这样做。)

    对于1.9.2以后的版本,从源代码安装Ruby非常容易。这使你宝石和其他一切,自动,完全整合。(例如,在安装了Rails gem之后,您可以键入“ri field \u for”来了解Rails中的所有嵌套表单。)

    无论有没有RVM,它现在都是获取Ruby最简单、最可靠的方法。不管怎样,我的10C。