FreeBSD Daily Topics

2012年5月21日次世代パッケージシステムpkgngとJail

pkgng

pkgng - Modernising FreeBSD package management

FreeBSD Portsチームは次世代のパッケージシステムとしてpkgngの開発を進めています。現在のパッケージ(Packages)は、Ports Collectionによってビルドされインストールされたソフトウェアをtarballにまとめたものです。必要最小限のメタデータだけを保持しています。シンプルな反面、現在主流のLinux系パッケージ管理システムと比較て、機能が貧弱で不完全という問題があります。

pkgngはこれを解決しようという取り組みで、より多くのメタデータを保持させ、ローカルのバックエンドデータベースにSQLiteを導入、より完全性の高い依存性計算の実現や簡単なインストール・アップグレード作業を実現することを目指しています。10-CURRENTにはすでにpkgngのコマンドであるpkg(1)が導入されています。たとえば、pkgng経由でインストールされたパッケージを自動的にすべてアップグレードするには次のように作業します。

# pkg update
# pkg upgrade -y

最近はJailとの連携機能も導入され、次のように特定のJail環境を指定して、Jail環境内のパッケージをアップデートするといった作業が簡単に実施できるようになっています。

# pkg -j jailname update
# pkg -j jailname upgrade -y

この機能を利用すると、たとえばメニーコアのホストサーバで多数のJail環境を提供しているようなケース、たとえばホスティングサービスを提供しているようなケースですが、こうった場合でどれかひとつのJail環境でアプリケーションのアップグレードと動作チェックを実施し、問題がなければほかのJail環境に対して個別にアップグレードを実施するといったような作業を簡単に実施できます。

現在、2万3,600を超えるソフトウェアがPorts Collectionに登録されていますが、うち、pkgngへの自動変換が可能なものは2万2,100を超えるとされています。だいたい93%ほどがそのままpkgngでも利用できることになります。

今後の作業としては9-STABLEへpkgngのマージ、Capsicumの適用、サブパッケージの提供、マルチABIパッケージの提供などが挙げられていました。

pkgngの提供が開催されても、しばらくはPackagesと両方提供されるものと見られます。また、Ports CollectionからインストールすればPBIを使ったパッケージのインストールやアップデートも実施できるようになっています。これでFreeBSDは3つのパッケージ管理システムを持つことになります。どの方式にもそれぞれに特徴があり、適材適所で使われることになるのではないかと思います。

おすすめ記事

記事・ニュース一覧