From: Takahiro Kambe Date: 2005-09-27T12:53:24+09:00 Subject: [ruby-dev:27323] Re: RubyGemsとOS platformとの関係 こんにちは。 debもrpmも、よう理解していませんし、RubyGemsはさらっと概要をWebで見た くらいです。(あ、あとgemsのファイルの中身がどうなっているかくらいは見 ました。) 一応、思い付くままに書いてみます。 In message <43381BF3.3000802@ruby-lang.org> on Tue, 27 Sep 2005 01:04:18 +0900, akira yamada / やまだあきら wrote: > Daigo Moriwaki wrote: > > RubyGems原理派は、DEBやRPMがgemをラップ(DEB内にgemを入れて、DEBのインス > > トール時にrubygemでgemをインストール)すればそれで事足りて、それがRuby > > ユーザにとって最良だから、そうすべきで、それ以外のやり方はすべきでないと > > 言っている。 > > このやり方だけだとバイナリパッケージの利点の一つである > コンパイル済みというのが無くなってしまって > うれしくなくなる人がいそうな気がします。 同感です。 > あとgemの依存関係に従って、debやrpmのインストール中に > 他のgemを取ってきてコンパイルしてっていうのが行われるのは > 割と気持ち悪いことなんじゃないかと思います。 独自に依存関係を持つのが悪いとは言えませんが、あまりにRubyGemsで閉じて しまうのはどうかと思います。 > # バイナリパッケージをインストールすると > # ccが走るというのを許容したとしても。 コンパイル済パッケージ(バイナリ・パッケージ)が必要なケースというのは、 コンパイラとかがインストールされていない環境である可能性もあり得ます。 pkgsrc/portsの場合だと、 1. 配布ファイルの取得 2. 配布ファイルの展開 3. 必要なパッチの適用 4. configure的コンパイル作業等の前の設定 5. コンパイル作業等の実行 OpenBSD以外では、 6. インストール 7. (オプショナルな)バイナリ・パッケージの作成 OpenBSDだと、 6. 仮のrootにインストールして、バイナリ・パッケージの作成 7. バイナリ・パッケージをpkg_add(8)でインストール といった感じになります。(インストールされたファイルは、そのMD5と共に一 覧が然るべきところに保管されています。) ちなみにperlモジュールの場合は、 o 4.や5.のあたりの枠組みが Makfile.PL という形でカッチリしています。 (Module::Buildというのが加わるかもしれませんが。) o インストールされたファイルの一覧を .packlist という形で残しくれます。 といったあたりが、pkgsrc/portsを作成する場合に楽な点です。他方、Rubyの 場合は、このあたりの一貫した枠組みがないのが辛いところで、これが RubyGemsで解消できるなら、たいへん嬉しいと言えます。 pkgsrc/portsあたりでRubyGemsに期待すると思われるのは、 (1) gemsに配布ファイルを持ってくるだけの機能があれば、それを使って配布 ファイルの取得の段階を任せられて嬉しい。(できるのでしょうか?) (2) 4.や5.の部分をgemsに任せることができると嬉しい。 (3) インストールされたファイルの一覧をgemsから教えて貰えると嬉しい。 といったあたりではないかと思います。 ちなみにpkgsrcの御大(もちろん私ではありません)から、「RubyGemsに対応し た、Rubyの拡張モジュールのためのpkgsrcでの枠組みを考えてる。」といった メールを個人的なメールを貰ってます。(という話は、OSC2005で誰かにした記 憶があります。) > つまりrubygems的にgemがそのまま見え、 > パッケージシステムからはgemをwrapしたパッケージが見える、 > といったところが落としどころだろうと思っています。 私もそう思います。それ以外では既存のパッケージ・システムと(不毛な) 喧嘩をするだけにならないでしょうか。 > # この場合、rubygems的やり方で(パッケージシステムをバイパスして) > # gemを操作してしまったときにパッケージシステム的に > # おかしな状況になる可能性が高いという問題点はありますが。 そういう操作を禁止してしまうというやり方もあるかもしれませんが、私は、 そこまでしなくても良いと思います。 基本はパッケージ・システムで管理すべきですが、(まだ)パッケージになって いない RubyGems で用意されているといったものを使用する余地は残すべきだ からです。 gemsの方で、管理されているパッケージ・システムを理解して、然るべき手順 でコマンドを呼び出すといったことができると、ほんとはユーザは嬉しいかも しれません。しかし、それはそれでgemsの方に負担もかかるでしょうし、現実 的ではないと思います。 -- 神戸 隆博(かんべ たかひろ) at 仕事場