パッケージ管理システムをつくろうと考えている。クロスプラットフォームなやつ。といいつつ、Windowsは対象に入れていなかったりする。
いろいろ考えたこと。
- バイナリかソース・コードからビルドするか
- パッケージの粒度は?
- 依存関係の解決について
- aptitudeのように依存だけでなく、推奨などの関係も持ち込むかどうか
- 個別にパッケージ管理システムを持つ環境 (Ruby, Perlなど) のパッケージ・ライブラリを利用している場合はどうするか
恐らく、
- ソース・コードを自動的に取得、ビルド
- MacPortsのvariantsのような仕組みを採用
- パッケージ間の関係は依存のみ(推奨などは無い)
- RubyやPerl, Scalaなどのライブラリは基本的に言語ごとのパッケージ管理システムに任せる(依存解決に言語ごとのパッケージ管理システムを利用する)
といったかんじの構成、仕様になるとおもう。しかし、問題なのはどの言語で書くか、ということ。どの言語、というより、Rubyで書くのか書かないのか、という問題。
RubyはLSBのInterpreter Languagesに入っていない。LSBに準拠しているOSでデフォルトの構成に入っていることが保証されない。つまり、新たにRubyをインストールしないと動かないことになる。これはけっこうめんどくさい。
いろいろ解決策が考えられる。
- 気にせずRubyで書く。インストーラはシェルスクリプトなどを使って、Rubyもインストールするようにする。
- Perlで書く。
- Pythonで書く。
- シェル・スクリプトで書く。
下に行くほど現実的でない策。Perlで書くというのが、いろいろおもしろそうではある。でもセミコロン書きたくないな。
書き忘れたけど、Macのアプリケーションもこれで管理できるようにしたい。