[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HPM:HSPのためのパッケージマネージャ


まだほとんどできてないから構想だけ。

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とすると、

  1. hpm_addによりuri://*/foo.rdfからパッケージ記述ファイルfoo.rdfをダウンロード
  2. 署名をチェック
  3. パッケージをダウンロード
  4. インストールに関する記述に従ってファイルをローカルにコピー(ファイルのハッシュも保存)
  5. ソフト固有のセットアップを行う
  6. 依存関係を登録

アンインストール

  1. hpm_deleteでパッケージfooに対応するrdfを検索
  2. 依存関係のチェックを行なう
  3. ソフト固有のセットアップを行う。
  4. ファイルを削除
  5. 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作成ウィザード。これも。

バグ報告

疑問・質問・その他つっこみ