11/17/2006

為什麼 Debian 跟 Ubuntu 上面沒有 ruby-gems?

Ruby Gems 是一個相當重要的 Ruby 套件管理系統,有太多 Ruby and Rails 的 Plugin 在 Gems 上面可以方便的下載。但是,FreeBSD ,MAC OS X,Gentoo 都可以直接用預設的套件系統安裝 gems ,卻只有標榜安裝快速方便的 Debian 跟 Ubuntu 沒有提供 APT 安裝。這到底是為什麼呢?

我看了一些討論串這裡網頁解釋了許多 Debian 上面為何不加入 Ruby Gems 的原因。
  • Rubygems packages are not compatible with the FHS. Rubygems follows the “one directory per package and version” rule.
  • It is not possible to do “normal” (FHS-compatible) installations of rubygems, and some ruby software developers have started to distribute their software as gems only.
  • Rubygems is source-intrusive. The require instruction is replaced by a require_gem instruction to allow for versioned dependencies. Debian and most other systems think that dealing with versioned dependencies outside of the source is a better idea.
  • There are currently no plans to improve RubyGems to ease the work of Debian and RPM packagers.
當然啦,每個套件系統都有自己的 concern,不過我不太能接受這個理由,難道 Ruby Gems 必須為了特定系統開發一個新的方式嗎?

到底是系統應該配合開發者的習性,還是開發者得自己去適應系統的規則?

但是看到這個網頁,我覺得這個講的比較實在點
Pure ruby gems are converted fine. However, ones including C extensions are not.
大意是如果這個 GEMS 是純 Ruby 當然歡迎,但是有些 Ruby Gems 是有 C extenstions 的(一些 Ruby Lib 像是 ruby-mysql ),那就很容易出現安裝錯誤,所以相當不建議使用 Ruby Gems 摟。 為此,Debian-Ruby 的 Daigo Moriwaki 也寫了自動轉換 GEM 成為 DEB 的程式,希望能方便大家打包 Ruby Gems 的 DEB Package。但是話說回來, Ruby Gems 那麼多,你怎麼可能全部包成 DEB ?Ruby GEMS上有些東西有安全性顧慮時,要緊急下載 patch ,這時通常官方會建議使用 Gem 去更新,難道 DEB 也可以立刻做到即時更新?還是要使用者自己苦哈哈下載 source 自己裝?

到底是系統應該配合開發者的習性,還是開發者得自己去適應系統的規則?

如果答案是後者的話,Ruby GEMS 要怎麼做到跨平台?所以 Daigo Moriwaki 也深知這個道理,也提供了 Unofficial 的 deb source XD
deb http://www.sgtpepper.net/hyspro/deb unstable/
deb-src http://www.sgtpepper.net/hyspro/deb unstable/
Update 完 DEB index 之後,apt-get install rubygems 即可。

沒有留言: