Gauche:パッケージ管理

Gauche:パッケージ管理

(Shiro:2016/01/05 03:41:04 UTC) パッケージ管理機能についてのメモ。

欲しいもの: 必要なライブラリを書いとくと、依存するものまで自動的に引っ張ってきてよきにはからってくれる機能

もともとの目論見としては、dpkgやrpmのような既存のパッケージマネージャが既にそういう機能を持ってるので、重複して開発するよりそっちに乗っかる方がいいかなと思ってた。のだが、

これをライブラリ作成者にやってもらうのは難しい。

他の言語処理系を見ても、自前でやるのがトレンドっぽい。

(ポータブルなSchemeならsnowに乗っかるという手があるが、Gauche専用だと別に持つ方がよいだろう)

必要な機能:

メタデータ

できればsnowのとある程度コンパチにしたいけど、引っかかりそうなところ

メタコマンド

leinとかgoみたいに、パッケージ管理じゃなくビルドやテスト、実行までの 面倒を見るコマンドがあると、とっつきとして導入しやすい。leinみたいにひとつファイル 落として実行したら処理系のインストールや更新までやってくれる、というのも良い。

ただ、今はGaucheで何かするときにとりあえずgoshと打つ、ってことになってて この名前は結構気に入っている。goshの上に来るメタコマンドを作るとして、新たなトップレベルの 名前を導入するのが難しい。gauche-packageみたいに長い名前だと常用するのはきつい。

覚えることを減らすなら、コマンドはgoshで統一し、gosh getだの gosh packageだのサブコマンドで何かする方が最近の流れには沿ってる気がする。 これはget.scmpackage.scmを標準で用意しとけばいいだけなので 簡単にできるんだが、goshをメインコマンドにする場合、gosh自身の インストールとアップデートをどうやるか、というのが問題になる。

  1. goshを含むGauche実体のインストール、アップデートは従来どおりの方法 (untar+configure+make+make install、もしくはディストリビューションのパッケージマネージャ)で行い、パッケージ+依存性管理はgoshのサブコマンドで行う
  2. goshをメタコマンドに変更し、スクリプト名が与えられなかった場合にサブコマンドとしてreplを起動する。
  3. goshに現在のrepl機能とメタディスパッチ機能を両方持たせる。最初のインストールだけは別にやってもらうが、一度goshが走ったら、新しいバージョンのインストールとか複数バージョンの切り替えはgoshで行えるようにする。

ディスカッション


Last modified : 2016/03/25 23:03:19 UTC