2010年4月5日月曜日

zero-install パッケージ管理システム

前フリです。

ディストリビューション依存というか、
それぞれ標準的なパッケージ管理システムがあるわけですが、
大別して、deb系/rpm系に、2分しちゃってると言ってよいでしょう。

ubuntu, debian apt, dpkg
fedora, redhat rpm, yum

筆者は、redhat系からubuntuに鞍替えしました。本家debianの、debシステムを継承しつつ、openofficeまで入ってたりの充実したパッケージ群。普通にデスクトップOSとして使えます。そうやってディストリビューション配布のパッケージを使う限りはまるで問題はありませんが、そうでない場合に困ることが色々あります。

例えば firefox。本家の最新版は、3.6.2ですが、ubuntu-8.04の標準は、未だに3.0.x系です。ディストリビューションごとアップグレードするのも色々アレです。

ディストリビューションとしては致し方ないことですが、オープンソースのボランディアベースと言えど、配布にはある程度の責任が伴うので無闇に最新バージョンを追いかけるわけには行きません。

しかたがないから、自分で入れるわけですが。

バイナリの*.tgzも配布している製品もありますが、
/opt/ナントカに掘って、シンボリックリンク張って、とか。
別にルートパーティションに入れる必要はないのですが、
ホームに入れるのも気持ち悪かったりとか。

外部の人間が、「ubuntu-○○用」として配布しているリポジトリもありますが、
実際使ってみると、意図しないパッケージ群までドッサリアップグレード掛かったりして、
動かなかったらどうしよう?と結構不安です。


本題です。

linux用の、
ディストリビューション非依存の、パッケージ管理システムとして、
zero-install http://zero-install.sourceforge.net/
と言うものがあります。

もっと有名になっても良いと思います。

日本語説明もあるにはありますが、
記事が古いのと、事情の説明に終始しています。
http://sourceforge.jp/magazine/07/02/21/0133253

端的に言えば、パッケージ名の代わりに、URLを使います。まあURLの正体は、パッケージ定義ファイルな訳ですが、ソフトウエア特定の方法としては悪くないでしょう。
ダウンロード&展開は自動です。展開は、自分のホームディレクトリ .cache/0install.net/ を掘って、その界隈でなんとかしてくれます。気持ち悪い気がしますが、管理はzero-installがやるので実害はありません。

一方、ダウンロード済み&そのディレクトリに展開済みのものは、サラっと起動します。

運用は簡単です。例えば、
0launch http://0install.net/2006/autopackage/Lincity.xml
これだけで、lincityが動きます。root権限も要らないので、気楽っちゃ気楽です。
アップグレードも自動です。xmlファイルの中身の更新が何かしらあれば、「更新しますか?」とは聞かれます。

zero-installの成り立ちは、何がしかのオープンソースソフトウエアの作者が、各ディストリビューションに自分の成果物を入れてほしい時ですね。ところが前述の通り、それぞれディストリビューション毎に流儀が違いすぎて、色々面倒です。ディレクトリ構造しかり。