まだほとんどできてないから構想だけ。
HSPのためのパッケージマネージャ
HSPによって書かれたソフトのインストール、アンイストールが簡単にできるソフトはいままでなかったので作ってみよう。と思った。
パッケージマネージャに必要な機能
- レイアウトに沿ったファイルのインストール
- 安全なアンインストール
- 安全なアップデート
- パッケージ間の依存/衝突の検出
パッケージの形式
初期化ファイル、データベース等はすべてrdfで管理しよう(Google:rdf)。
rdfにはアーカイブ中の各ファイルに対してどのような操作をするか、が格納されている。このやり方だと、みなさんが現在配布しているアーカイブ自体は変更すること無しにインストーラを作成できるようになるのではないかな、と思う。
tool
とりあえず、足がかりとして、*BSDのpkg_*みたいなのを考えているところ。
最低、Win32環境のMingwでビルドできるようにしよう。
- hpm: 統合マネージャ。マスターサイトからパッケージリストを集め、hpm_add,hpm_deleteを呼出すことでインストール、アンイストールする。
- hpm_add: .hpmファイルをインストールする。
- hpm_delete: .hpmファイルをアンインストールする。
- hpm_info: パッケージの情報を表示
- hpm_create: パッケージ作成者用ツール。
少なくとも、
hpm_add uri://.../foo.rdf
でネットワーク越しにインストールできるようにしよう。
想定している動作
インストール
パッケージをfoo.zip、パッケージ記述ファイルをfoo.rdfとすると、
- hpm_addによりuri://*/foo.rdfからパッケージ記述ファイルfoo.rdfをダウンロード
- 署名をチェック
- パッケージをダウンロード
- インストールに関する記述に従ってファイルをローカルにコピー(ファイルのハッシュも保存)
- ソフト固有のセットアップを行う
- 依存関係を登録
アンインストール
- hpm_deleteでパッケージfooに対応するrdfを検索
- 依存関係のチェックを行なう
- ソフト固有のセットアップを行う。
- ファイルを削除
- foo.rdfを削除
デベロッパ向け
HSPのプログラムからも呼出せるように、libhpm.dllとかlibhpm.soの形でライブラリは分離しておくと便利かな。
実装
とりあえずCでいいか。なんだかんだいって一番楽だし。
GUIフロントエンドはHSPで作ればいいので後まわし。
コンテンツ管理
パッケージに関する諸情報の管理にDOAPを使用することにしました。
DOAPを組み込んだhpm自身のパッケージファイルが http://quasiquote.org/hpm/hpm.rdf に
あります。XSLTプロセッサを内蔵しているブラウザ(IEやMozilla等)であれば直接読むことができると思います。
読めなかったならば、xmlから変換済みのhtml( http://quasiquote.org/hpm/hpm.html )を参照してください。
もちろんhpm_infoから直接参照することもできます。
コマンドラインから、
$ hpm_info http://quasiquote.org/hpm/hpm.rdf
で情報が出れば成功です。
必要なライブラリ
ネットワーク前提なので、セキュリティ等を考慮して、できるだけ自作しないことにする(たくさんの人が使っているものを使う)。
いまのところ必要なライブラリは、
おまけライブラリは、
これは別に無いなら無いでかまわない。
配布
早めのリリース。しょっちゅうリリース。
射撃しつつ前進。
リリース版
まだありません。
開発版
試験的にGNU archでリビジョン管理をしてみることにしました。
$ tla register-archive YourArchive http://quasiquote.org/arch/hpm/2005/
$ tla get YourArchive/hpm-current--0.1 hpm
で最新のソースを取得できます。
COPYING
修正BSDライセンスです。
Copyright (c) 2004 Iwata <iwata@quasiquote.org>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
履歴というかメモというか
- 2004/12/24 11:21:17 JST ひさびさに更新。ファイルアクセスまわりをでっちあげた。
- 2004/09/06 00:12:02 JST DOAPまわりはこれで完了。あとはインストール手続きの仕様を決定することに。
- 2004/08/29 09:43:30 JST DOAP,FOAFをいいかげんに実装。いまのところxml:langによる言語切り替えができない。でもまあ、とりあえずパッケージの自己記述はできるようになったので、あとはインストール手続きのプロトコルを決めないといけないな、と。こればっかりはXML Schema書かないと駄目なのだろうか。
これからの予定
- pdtpへ対応。これはたぶん簡単。
- パーサを洗練されたものにする。
- アーカイバの展開ライブラリ作成。めんどくさい。
- パッケージのXML Schema決定。最高にめんどくさい。
- HSPによるGUIのインストーラ。これは簡単にできるようにしないとなあ。
- HSPによるGUIのRDF作成ウィザード。これも。
バグ報告
疑問・質問・その他つっこみ
|