パッケージ管理システムについて

パッケージ管理システムをつくろうと考えている。クロスプラットフォームなやつ。といいつつ、Windowsは対象に入れていなかったりする。

いろいろ考えたこと。

  • バイナリかソース・コードからビルドするか
  • パッケージの粒度は?
  • 依存関係の解決について
    • aptitudeのように依存だけでなく、推奨などの関係も持ち込むかどうか
    • 個別にパッケージ管理システムを持つ環境 (Ruby, Perlなど) のパッケージ・ライブラリを利用している場合はどうするか

恐らく、

  • ソース・コードを自動的に取得、ビルド
  • MacPortsのvariantsのような仕組みを採用
  • パッケージ間の関係は依存のみ(推奨などは無い)
  • RubyやPerl, Scalaなどのライブラリは基本的に言語ごとのパッケージ管理システムに任せる(依存解決に言語ごとのパッケージ管理システムを利用する)

といったかんじの構成、仕様になるとおもう。しかし、問題なのはどの言語で書くか、ということ。どの言語、というより、Rubyで書くのか書かないのか、という問題。

RubyはLSBのInterpreter Languagesに入っていない。LSBに準拠しているOSでデフォルトの構成に入っていることが保証されない。つまり、新たにRubyをインストールしないと動かないことになる。これはけっこうめんどくさい。

いろいろ解決策が考えられる。

  • 気にせずRubyで書く。インストーラはシェルスクリプトなどを使って、Rubyもインストールするようにする。
  • Perlで書く。
  • Pythonで書く。
  • シェル・スクリプトで書く。

下に行くほど現実的でない策。Perlで書くというのが、いろいろおもしろそうではある。でもセミコロン書きたくないな。


書き忘れたけど、Macのアプリケーションもこれで管理できるようにしたい。