FreeBSD Daily Topics

2012年5月22日 pkgngとPBI

この記事を読むのに必要な時間:およそ 1 分

ports

next generation packages system : pkgng vs PBI

PBIもpkgngも現在のPackage,いわゆるpkg_*シリーズのコマンドで操作できるパッケージに対するカウンターツールとしての意味合いを持って登場しています。pkgngの開発者はしばしば自身のプレゼンテーションで,pkg_install/add/perform.cの次のコメントを引き合いに出してユーモアを交えてpkgngの説明を始めます。pkgngといった別のツールに移るべき証拠を見せるといったニュアンスを演出しつつ,プレゼンがしやすいように会場に笑いを誘う目的があるものとみられます。

/*
* This is seriously ugly code following. Written very fast!
* [And subsequently made even worse.. Sigh! This code was just born
* to be hacked, I guess.. :) -jkh]
*/

★コメント★
ここのコードは本当にヒドイ。ちゃちゃっと書いただけなんで (…結局さらに悪化した。こいつはもう応急処置でしのぐしかないだろう('A`)? - ジョーダン)

BSDCan 2012の発表では,Jordan K. Hubbard氏本人の前でこれがはじまったのでギョッとしましたが,こうしたカンファレンスでは本人を前にしてのディスり合いは珍しくなく,ジョーダンさんも苦笑いをしていました。

一方,Jordan K. Hubbard氏はpkgngをpkg_*の置き換えツールとしては適切ではないと考えているようで,氏はPBIの方が置き換えにふさわしいと考えているようです。この2つのツールはパッケージ管理システムとして取り上げるにはそれぞれ面白い側面を持っていますので,ここで簡単に比較しておきたいと思います。

PBIは単一パッケージに依存するすべてのライブラリなどを同梱するという仕組みのパッケージです。Ports Collectionから半自動的に生成され,アップデートもロールバックも簡単な上,ほかのアプリケーションに影響を及ぼしにくいという特徴があります。もともとPC-BSDで採用するパッケージ管理システムとして開発されたもので,現在ではpfSenceも採用しています。PBIは依存関係での問題が発生しにくいため,プロダクトレベルで採用しやすいといえます。

一方pkgngは,いわば現在のPackagesを順当に進化させたような仕組みを採用しています。Linux系パッケージ管理システムが実現している機能を実現するように仕組みを構築しています。依存関係は従来のPackagesと同じです。Jordan K. Hubbard氏はこの点を特に指摘し,依存関係の問題が本質的に解決しておらず,PBIの方が適切ではないかという意見を上げたということになります。

pkgng - Modernising FreeBSD package managementの発表ではパッケージセットに関する発表がなかったので,その点を補足しておく必要があります。pkgngでは依存の問題を解決するために,すべてのパッケージを一週間おきにフルで提供し,アップデートはパッケージセットごとに実施することで,解決策としています。

現在のPackagesはリリース向けに特定のスナップショットが作成されたあとは,STABLE向けにランダムにパッケージがアップデートされるだけですので,パッケージベースでアップデートを実施しようとすると依存関係の問題が発生してうまくアップデートを実施できないという状態が発生します。

pkgngでは1週間ごとにすべてのパッケージを作成しなおして提供します(という予定です)。それらはパッケージセットと呼ばれ,パッケージセット内部では依存関係の問題が発生しないようにします。こうすることで,pkgngでアップデートを実施しても依存関係の問題は発生しないというのがpkgngの発想です。

逆にPBIの欠点は,PBIパッケージのサイズが大きくなることです。インストールされる成果物はハードリンクを活用することでデータの重複を防ぐ策をとっているため一応の対策は取られていますが,それでも現在のままではフルでデータのダウンロードを実施する必要があります。

pkgngもPBIも問題部分の解決へ向けて常に改善を続けているため,結局は同じような状況に落ち着く可能性はありますが,現在のところ豊富にディスクリソースがあるならPBI,ディスクリソースやネットワークリソースが限られているならpkgng,というのはひとつの指針といえます。

どちらも興味深い方法ですので,状況に応じて適したものが選択できれば良いかと思います。Ports Collection自体は常に開発が進められていますし,今後の改善も期待されますので,FreeBSDにおけるアプリケーション管理は今後もさまざまな方法で目的に応じて採用できる状況ということが言えます。

コメント

コメントの記入