BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rip: Rubyの新しいパッケージ管理システム

Rip: Rubyの新しいパッケージ管理システム

原文(投稿日:2009/6/14)へのリンク

RipはGitHubから来たRubyの新しいパッケージ管理システムであり、いろいろなインストール資源(ディレクトリ、ファイル、Gitリポジトリ、RubyGemsのような)を扱うことができる。

もう一つの興味深い新機能は、仮想環境("ripenvs")である。Ripenvsは競合を避けつつ、複数のバージョンのパッケージをインストールして、管理するために用いることができる。Ripenvsは手軽で、より安全に依存関係をアップグレードする手段でもある。つまり、新たに試験環境を構築し、アップグレードしてみて、うまくいかなければ以前の安定した環境に戻すことができる。

だが、なぜまったく新しいパッケージ・マネージャなのか?RubyGemsのどこに問題があるというのか?我々は、Ripの開発メンバーであるChris Wanstrath氏に話を聞いた。

実際、RubyGemsには何の問題もありません。私もRubyGemsは大好きですよ。世間では、RipがRubyGemsを"修正"するため、あるいは置き換えるために書かれたと思われているようですが、それはまったく違います。

Ripはパッケージのインストールや運用、管理をとびっきり便利なものにするために書かれました。パッケージを配布する人のためではなく、パッケージをインストールする人のために書かれたのです。推測や検証作業からではなく、コマンドを叩くことで、アプリケーションがどのライブラリのどのバージョンを使っているかを正確に知りたい人のために。パッケージをインストールするとき、まさにそのことについて考えているときに(アプリケーションを起動するときや、他のことを考えているときではなくてね)、依存関係の競合について知りたい人のために書かれたのです。

デバッグを手伝おうとして「動いているXのバージョンはなに?」なんていう質問はしたくない人のために書かれたのです。それは、すべての製品が同じライブラリの同じバージョンで動いている、という保証が欲しい人々のためのものです。変更をコミットする前に、ライブラリのアップグレードが環境にどういった影響を及ぼすか、調べておきたい人々のためのものです。

Ripは他のシステムの悪いところを見て書かれたのではなく、良いところを見て書かれています。

単にRubyGemsを改良した方が簡単だったのではないか?

RipとRubyGemsはまったく違う生き物です。
  • RubyGemsは`require`を書き換えますが、Ripは$LOAD_PATHを使います。
  • RubyGemsは`require "rubygems"`を必要としますが、Ripは$RUBYLIBを使います。
  • RubyGemsはライブラリのさまざまなバージョンをひとつの環境で管理しますが、Ripはライブラリのバージョンごとに複数の環境を使って管理します。
  • RubyGemsは.gem形式のファイルをインストールできますが、Ripは理論上、どんなパッケージ型式でもインストールできます。
本当に、この2つは目的の異なる別々のプロジェクトなのです。私はRubyGemsの方向性、主なユーザ、基礎をなすコードを完全に変えてしまうことが、簡単だとも、また適切だとも思っていません。2つのシステムはうまい具合にお互いを引き立て合って、共存していくことができます。

仮想環境はRubyのいろいろなバージョン(JRubyのような)に向けてパッケージを管理する目的にも、申し分ないように思われる。

その通り。できることなら異なるRubyに異なるripenvs(インストール可能なRip仮想環境)を配布したい。これは間違いなくRipが適したケースです。ひとつは1.9、ひとつは1.8、ひとつはJRuby – Ripを使えば、あなたにとってもユーザにとっても、簡単になります。

これがRipのやり方です。特別な機能は必要ありません。

Ripはバージョン0.0.1がリリースされたばかりだが、将来に向けてなにか計画しているのか?

私たちはまだ宣伝を始めていませんし、ripenvsの持つ可能性を見つけ出すこともできていません。たったひとつのコマンド(e.g. `rip freeze | gist`)で開発環境を共有できること、バージョン間の競合を心配せずに開発環境をマージできること、ripenvsを使ってアプリケーションの配備を促進すること、は注目すべきアイデアの一部にすぎませんが、Ripの優れている点を明らかにする助けになります。

ripenvに加えた変更を簡単に表示したり、元に戻したりできるように、gitの`reflog`のアイデアをコピーしたいとも思っています。Ripを使っているとき、データやセットアップの損失を心配をしなくてもいいようにね。

名前は知っているけれどURLがわからないとき、パッケージを見つける良いアイデアもあります。

当然、hg、svn、bzrのサポートは計画されています。どこからでもインストールできるのです。

Rip 1.0では、Windowsのサポートも必要でしょうね。

さらに詳しい話と簡単なチュートリアルは、Ripのウェブサイトで見ることができる。

この記事に星をつける

おすすめ度
スタイル

BT