2013-05-09

Ubuntuがまたぞろ新しいパッケージフォーマットを再発明?

[Phoronix] Ubuntu To Get Its Own Package Format, App Installer

App installer design: click packages

メーリングリストubuntu-develで、Ubuntuのための新しいソフトウェアパッケージシステムの必要性が議論されている。

この新しいパッケージシステムは、既存のapt/dpkg/debを置き換えるのではなく、共存するらしい。

Debianから受け継いだ既存パッケージシステムはよくできている。依存関係の設定にも相当な労力が費やされている。UbuntuをDebianの最新版と同期するには、今後もdpkgとaptは使うことに変わりはないし、これを捨てる理由はない。新しいパッケージシステムは既存のパッケージシステムと共存する。

では何故新しいパッケージシステムを再発明するのかというと、ベースとなるシステム以外に依存しないパッケージを作りたいからだという。

つまりこうだ。既存のパッケージシステムは、パッケージがお互いに複雑に依存している。あるソフトウェアはあるライブラリを必要とするので、インストール時には、依存するライブラリもインストールしなければならない。あるソフトウェアは、同じライブラリの別のバージョンを要求する。当然これに対応しなければならない。

debとdpkgとaptはそれなりによくやっているが、依存関係のない独立したバイナリを配布するには向いていない。

そこで、土台となるシステムを定め、その土台システムのみに依存するようなパッケージシステムを作ってはどうか。つまり、debならば細かくパッケージを分割していた場合でも、ひとつのパッケージに全部入れて配布するのだ。これにより、パッケージ同士の依存関係は存在しなくなる。パッケージをそれぞれ別の独立したディレクトリにインストール可能になる。インストールにroot権限を必要としない。

と、そういう目的らしい。主に携帯用途のUbuntu Phoneでの活用を目指しているようだ。

私の考えでは、どうもこれは、不自由なソフトウェアのバイナリのみを配布するのに都合のいいパッケージシステムに思えてならない。そういう細かい依存関係が問題になるのは、不自由なソフトウェアのバイナリだけを配布したい場合だ。バイナリのみで配布する場合、共有ライブラリの差異が問題になるので、結果として依存するライブラリは安全のため、すべて同梱という形になる。

さらに、独立したディレクトリにインストール可能とかroot権限を必要としないということにも引っかかる。まさかUbuntu Phoneは利用者に管理者権限を与えない制限コンピューターに成り下がるのではあるまいな。

ただし、今のパッケージシステムが複雑で分かりにくいという事は確かだ。さらに、今のGNU/Linuxでは、単にそのへんに展開してその場で実行というポータブルなソフトウェアも作りにくい。ただし、やはりソースコードを配布して利用者の環境でビルドさせたほうがいいのではないかと思う。その方が究極の移植性を確保できるし、利用者に自由を保証できるし、そのソフトウェアが便利で知名度が上がれば、誰かが代わりにパッケージ化してくれるだろう。

4 comments:

NyaRuRu said...

実際にデスクトップアプリを開発している身としては,開発時に使ったライブラリのバージョンそのままで利用者に届けたいってのは割と普通の感覚に思えますけどね.リリース前のテストとか,自分のところでビルドしたバイナリにしかしてないわけですし.

Ingo Molnar の以下の文章も併せて読むと面白いかもですよー

https://plus.google.com/109922199462633401279/posts/HgdeFDfRzNe
https://plus.google.com/109922199462633401279/posts/VSdDJnscewS

江添亮 said...

GNU/Linuxでポータブルなバイナリ配布となると、どうしても安全のために、静的リンクか、共有ライブラリまで全部同梱して配布、実行前にLD_LIBRARY_PATHで自前ライブラリへのパスを指定という形になりますね。

しかし、X11やGTK+などのライブラリは同梱というわけにもいかず面倒ですね。

江添亮 said...

なるほど、読んでみるとたしかに、ディストロのレポジトリにパッケージを追加する仕組みはあまり自由ではない気もします。

NyaRuRu said...

あと,Canonical が実際検討している配布システムのアイディアがこの辺に書かれてますね.

https://wiki.ubuntu.com/AppDevUploadProcess
https://wiki.ubuntu.com/SecurityTeam/Specifications/ApplicationConfinement

Ingo Molnar が書いていたものに結構近い感じに読めます.