From: Daigo Moriwaki Date: 2005-09-29T01:29:37+09:00 Subject: [ruby-dev:27360] Re: RubyGemsとOS platformとの関係 森脇です。 akira yamada / やまだあきら wrote: >>こうしたいのだと思います。 >>A.gem depends on B.gem >>があったとき、 >>lib-a-rubygem.deb depends on lib-b-rubygem.deb >>という依存関係を持つnative packageを作れということだと思います。lib-a- >>rubygem.debのインストール時にB.gemを取ってくるのではなく。 >> >> > >これ(↑)をAとして > > > >>DEBを作る手法としていろいろ手段がありますが、次の案はそのひとつです。 >> >>o upstreamのソースツリーを持ってくる。 >>o upstreamでは、Rakeなどで、gemを生成するscriptがあるはず。 >>o Debianへのインストールに合うように、そのscriptをいじる。 >>o debian/rules内で、gemをビルドして、そのgemをrubygemsでインストール。 >> >> > >これ(↑)をBとすると > > > >>ただし、RubyGems原理派(適当な用語が見付からずにすみません。すでにレッテ >>ル色が出ているので、ちょっとずるいのですが)は、これも否定的で、 DEBパッ >>ケージの中にgemを入れれば済むと主張しているようです。このように、 >> >> > >AとBは同じ内容であると考えてよさそうに思えるのですが >なお「否定的」だというのはどこが違っていると言われているのでしょう? > > RubyGems原理派のいう方法は、Debian流にいえば、some.debにsome.gemをそのま まアーカイブして、debian/rules 内で # gem install some.gemです。その引数 で、ディレクトリの変更などをconfigureするまではOK。repackagerによるgemの 展開はNG。 RubyGems原理派といっても、言ってしまえば、Austinが声高に言っているだけな ので、どれだけの支持があるのかは図りかねています。 私は、彼がそこまで主張する理由は理解できません。Repackagerが良きにはから うと言っているのだから、後はdistroごとによろしく、で議論は終わりだと思う のですが。 おそらく、彼の心配は、 1. Rubyであるからには、どのPlatformでも全く同じ(=RubyGemsと同じ)であっ て欲しい。 2. RubyGemsが提供している機能(installやuninstall)があるのに、それを repackage側で再実装するのは無駄 3. gemをそのままであれば、もっともrepackageしやすく、native packageの数 を最大化できる(機械的に自動化できる) かなと。 私が思うに、そもそも3番目は無理です。特にDebianはLicenseに慎重です。ま た、もちろんなるべく多くrepackageしたいのですが、人間がやることなので限 界があります。技術面では自動化できたとしても、Policyチェックやバグの管理 があるので、メンテナが欠かせません。だから、 official native packageの短 時間での量産は難しいです。ただし、non-official packageの量産は、 converterを作れば可能でしょう。 repackageでいえば、現在すでに、青木さんのsetup.rbがあります。gemは gemspecなどsetup.rbにないものを持ちますが、 setup.rbに劣る面も今はありま す。RubyGemsがあっても、repackage作業が劇的に変化することはないでしょ う。manページも書かないといけませんし。 >また各OSの「パッケージの中にgemを入れれば済む」といった場合の >gemというのはバイナリではないbuildが必要となるgemのことで、 >そのようにした「パッケージ」をインストールする場合には >build作業が行われることになるものだということで合っていますか? > > バイナリについてはちょっと分かりません。分からないというのは、ruby-core でも議論が深まらなかった気がしますし、RubyGemsがコンパイルする方法を知ら ないので、よく分かりません。 ># つまり私はBをインスートした状態のgemをパッケージにしたもの、 ># または「precompiled binary用RubyGems」を内包した ># パッケージとイメージしまして、 ># いわゆる原理派の人々は ># 直接的にrubygemsを用いたのとまったく同じ形のインストールが ># 各環境のパッケージにおいても行われなくてはならない ># (もしかするとパッケージの管理外に、パッケージから見れば ># 単なるデータのような扱いで置くようにすべきだ) ># と考えておられるのかなと想像しています。 > > file system上にどう.gemを置くのかはともかく、.gemをRubyGemsでインストー ルしたのと全く同じ結果を期待しているようです。また、インストール過程にお いても、RubyGemsを最も信頼しているようです。 >Debianに限らず環境(あるいは何らかの仕組み)ごとに >事情があるのはしょうがないと思います。 >そして、日常的にその事情の上で活動している >パッケージ利用者の一部(もしかするとけっこう多く)は >かならずしもgemの何かを使いたいわけではなくて >ある目的のために必要な機能を使いたいだけであり >その実現方法がどのようなものであっても構わない、 >もっと言うと、他のパッケージと異っていて >めんどうな部分が出てくるのを嫌うということもあり得ると思います。 > >一方で、それが何であれgemとして使えることも >重要であるという人々はおそらく素直にgemを直接使うのであって、 >仮にそういうことが出来ない、または何か制限がかかってしまう >というのであればそれはまずいと思いますが、 >そうでない形で環境ごとの事情に合わせた形の >「パッケージ」を提供すれば良いのではないでしょうか。 > > まったく同感です。 では。 -- Daigo Moriwaki beatles_at_sgtpepper_dot_net