Zero Install:ネイティブのパッケージ管理システムに対する説得力のある批評
Zero Installは、ROX Desktopプロジェクトのいわば副産物である。Leonard氏によると、ROX Desktopはディストリビューションごとにパッケージを用意することでようやく使ってもらえるようになったが、そのパッケージ化のために貴重な開発の時間が削られたという。
また、それぞれにメンテナを見つけ出すのは容易ではなく、しかも彼らの作業には必ずしも一貫性や高いクオリティが保たれていたわけではなかった。とにかく、「各ディストリビューションはGNOMEやKDEのサポートで手一杯であり、我々のROXはほとんど放置されていたのだ」とLeonard氏は語る。
こうしたROXの苦悩から2003年に生まれたのがZero Installだ。Leonard氏によると、そのダウンロード数はおよそ26,000件に達しており、今のところ少なくとも112のプログラムがZero Installを使ってインストールできるようになっている。また、開発者向けメーリングリストへの投稿数も多くはないが着実に伸びつつある。それは、Leonard氏が指摘するように、Zero Installそのものは「シンプルな作りになっており、提供されるコンテンツがその重要な部分を担っている」ためであろう。
Zero Installによる問題解決
Autopackageと同様に、Zero Installもまた既存のネイティブ・パッケージ管理システムへの不満から生まれた。
Leonard氏がネイティブのパッケージ管理システムに対して感じている最大の問題点は、その自由度の低さである。Leonard氏は次のように語る。「ユーザは事実上、自分の使っているディストリビューションのパッケージしか使えなくなっている。一部のディストリビュータは、‘認定外の’ソフトウェアがユーザによって実行されるのを嫌う。誤ってバグ報告をしてくるユーザによってサポートのコストが余分にかかってしまうからだ」。こうしたディストリビュータの態度を「理解しがたい」と言及しつつも、Leonard氏はこの状況について「困ったことだが、Trusted Computing(信頼できるコンピューティング)の概念を採用してコスト削減をはかろうとするハードウェアメーカと同じ」だと述べる。
そのほか、セキュリティの問題もある。Leonard氏は自身のコンピュータを例にとり、次のように説明する。「現在、私のマシンには2,100ものDebianパッケージがインストールされている。マシンのアップデートを行うたびに、これらのパッケージの作者は該当するシェルスクリプトを私のマシンでrootとして実行しにかかる。文書パッケージや、何ヶ月も前にインストールしたっきり一度も使っていないパッケージも例外ではない。各パッケージのメンテナをそこまで信用したとしても、そうしたパッケージの1つがマシンに問題を起こすリスクがないとは言い切れない」
Leonard氏は、こうしたやり方を最低の権限の基本的なセキュリティを踏みにじるものだとし、「このことはデスクトップ・アプリケーションにシステムを破壊しうる権限を持たせるべきではないことを示している」と語る。サンドボックス化を可能にする取り組み ― そこにはプログラムのテストも含まれる ― が存在するとはいえ、「apt-getに対して一体どんなポリシーが書けるというのだろうか」と彼は疑問を投げかける。もちろん、YUMやその他すべてのパッケージ管理ユーティリティにも同じことが言える。
さらに、Leonard氏は柔軟性の低さについても不満を述べている。「私のマシンでは、各パッケージについて複数のバージョンは入れないようにせざるを得ない。また、私の環境にはGTK 2.8をインストールしてあるので、GTK 2.4のヘッダファイルに依存するプログラムはコンパイルできない。gnupgに対するセキュリティ・アップデートも、libreadline5との競合の問題からuser-mode-linuxをアンインストールしようとするので、インストールできない。さらに、10年前のプログラムを実行することもできない。昔のプログラムが必要とするライブラリは、今やすっかり様変わりしているからだ」。だが、こうした問題は回避できないものではない。むしろ、Leonard氏は次のように言う。「これらは、現在のインストール・システムによって勝手に決められて持ち込まれた制限に過ぎない」
Zero Installは、こうした問題を克服するように作られている。手作業による編集が必要なリポジトリの一覧に頼るのではなく、Zero Installでは、多くの形式のプログラムが含まれたWebページをその場で入力することができる。ここで言う形式には、DebianパッケージやRPMのほか、デジタル署名されていて任意のディストリビューションで動作するtarballやzipファイルまでが含まれる。rootユーザによってソフトウェアのインストールが行われるわけではないので、デスクトップ・アプリケーションのインストールやアップデートによってシステム全体が破壊される恐れはなく、ソフトウェアの試験的実行のためだけに使用するユーザアカウントを用意しておけばソフトウェアを容易にサンドボックス化できる。また、Zero Installは、1つのプログラムの複数バージョンを別々に管理する。
一方、Zero Installの大きな欠点は、それぞれのユーザが個別にこのソフトウェアをインストールしなければならないことにある。ただし、この点はそれほど大きな問題とは言えない。というのも、Leonard氏はZero Installをネイティブのパッケージ管理システムの完全な置き換えではなく、補完的な存在として見ているからだ。
Leonard氏は次のように語る。「当面の間、我々は取り組みの重点を、デフォルトの状態ではあまりインストールされていないプログラム(またはプログラムの各バージョン)やライブラリに置く。そのため、例えばZero Installを使ってGTKを提供したりはしない。すでに誰もが持っているからだ」。ただし、基本的なライブラリであっても以前または最新のバージョンがプログラムで必要になる場合は、Zero Installが利用できることもある。
採用に向けての障壁
Leonard氏は、Zero Installがそれほど普及していない理由をいくつか挙げている。1つは「一般に馴染みのあるソフトウェアとはかなり違ったものであるため、Zero Installは人々に説明しづらいと思われる点だ」という。人々はマニュアルのほんの一部しか読まずに、別のシステムから想像される類似性に基づいて判断を下すことが多過ぎる、と彼は嘆いている。
また、Leonard氏は、セキュリティのことになると人々は実情を正しく捉えようとしないことが往々にしてある、と語る。「最新のシステムであっても、普通はそれまでのシステムと同等あるいはそれ以上のリスクを抱えており、ただそれを隠しているに過ぎない。例えば、一部のUbuntuユーザは、我々のGPG鍵の確認ダイアログではソフトウェアの作者が未知であることの危険性について十分な警告が行われなかった、と不満をもらしていた。実際にはUbuntuも、デフォルトでは、セキュリティについて何も警告せずに署名のない.debファイルをWebからインストールしているのにである」
Leonard氏は触れなかったが、もう1つ難点として考えられるのがGUIである。いくつかのプログラムにとっては問題ないが、Zero InstallのGUIは、他の多くのプログラムにとってあまり適切なものだとは言えない。プログラムを提供しているWebサイトの一覧が、わざわざ表示内容をスクロールさせないと参照できないためだ。
だが何と言っても最大の難関は、Zero Installを各ディストリビューションに受け入れてもらうことにある。Autopackageとは異なり、Zero Installは各ディストリビューションから反感を買うようなことにはなっていない。こうした違いがあるのは、Autopackageの開発チームがGNU/Linuxの根本的な部分の多くを全面的に批判しているのに対し、Leonard氏による批判はもっと控えめで、主として、論争の種になりにくいありふれた問題に言及しているためだろう。
それでもやはりLeonard氏は、Zero Installを普及させるにあたっての大きな問題点として、各ディストリビューションの「無関心さ」を挙げている。今のところ、Zero Installパッケージをリポジトリに入れているのは、Fedoraだけである。Zero InstallプロジェクトのサイトにはDebian、Ubuntu、Mandriva、Slackware、SUSE用のパッケージも用意されているが、まだこれらのパッケージはそれぞれのディストリビューションでは受け入れてられていない。
しかし、各ディストリビュータがZero Installの存在を認めるのは時間の問題だろう、とLeonard氏は示唆する。「現状のネイティブのパッケージ管理システムがとっている、サードパーティ・ソフトウェアのそれぞれにカスタムのインストール・スクリプトを用意する方法よりも、こうしたソフトウェアのために何らかの構造化されたシステムを作ったほうが管理が容易なのは自明だからだ。そのため、各ディストリビューションは、Zero Installのようなシステムを受け入れるか、でなければ(多くのフリーソフトウェアが掲げている精神に明らかに反して)サードパーティ・ソフトウェアを完全に締め出そうとすることになるだろう」
今後の予定
Leonard氏は、Zero Installを「ほとんど完璧」と言い切っているが、同プロジェクトのロードマップには、現在検討中の拡張機能が数多く記されている。システム全体にわたってのインストール機能、あるいは少なくとも他のユーザとインストール環境を共有する機能に加え、Leonard氏は、依存関係にある既存のパッケージをZero Installが利用できるように、ネイティブのパッケージ管理システムとの統合も検討したいと考えている。そのほか彼は、インストールされたプログラムのキャッシュを消去する機能も検討している。必須のプログラムだけでなく推奨されるものも依存関係に含めるとともに、そのうちどれがインストール済みであるかのメッセージを表示するためだ。
なかでもLeonard氏が真剣に考えているのが、ミラーサイトのサポートであり、この点について彼は次のように語る。「きわめて重要なことだ。たとえメインのWebサイトがダウンしても、手動でミラーサイトを見つけ出すことなく新しいソフトウェアのインストールが可能になる」
こうした機能のなかには、大きな問題が立ちはだかっているものもある。特に、複数ユーザを対象としたインストールには、Leonard氏自身も重々承知しているセキュリティの問題がある。それでもLeonard氏は、全体を見渡せば解決策はきっと見つかる、と確信している。予定されている各機能について彼はこう述べている。「その大半はひたすらZero Installを高速化し、効率性や信頼性を高めるためのものだ。これらはちょっとした技術上の問題であり、考えられる多数の解決策から適切なものを選択すれば済むことだ」
Zero Installの使い方 |
---|
Zero Installの機能は、ROX Desktopから利用することができる。ただし、大半のユーザは、Dependency InjectorというPythonの小さなプログラムを使ってソフトウェアのインストールを行うことになるだろう。Zero Installプロジェクトのサイトには、このInjectorのダウンロードファイルがさまざまなパッケージ形式で用意されている。また、ROX Desktopをインストール済みであれば、そこにもInjectorの機能が含まれている。 Injectorをインストールし終えると、 同プロジェクトのWebサイトには、Zero Installで利用可能な既知のURLの一覧が掲載されている。ソフトウェアのインストールを始めると、途中でそのデジタル署名と依存関係のあるパッケージの一覧とが表示され、ユーザのホームディレクトリの下にある./cacheディレクトリにプログラムがインストールされる。 インストール完了後、プログラムは自動的に起動される。実際には、Injectorを実行してプログラムのインストールと起動を行うように選択することもできる。もっと実用的な方法は、 Injectorのウィンドウでは、インストールしたパッケージの更新頻度を設定したり、「Refresh」をクリックすることでその場でパッケージを手動更新したりできる。プログラムの削除を行うときも、実行するときと同じように操作する。「Cache」ボタンをクリックし、インストール済みプログラムの一覧から削除するものを選択して、「Delete」ボタンをクリックすればよい。 |
Bruce Byfieldは、NewsForge、Linux.com、IT Manager’s Journalに定期的に寄稿しているコンピュータジャーナリスト。