FreeBSD Daily Topics

2011年12月20日FreeBSD次世代パッケージ管理システム「pkgng」

ports

What's the pkgng?

FreeBSDでは現在、次世代パッケージ管理システムとなる「pkgng」の開発を進めています。開発は活発で、先月末にはα版バージョン2の試験の呼びかけがありました。近いうちにα版バージョン3が登場する見通しになっています。

FreeBSDのアプリケーションは大きく分けて2つの方法で管理されています。主にビルドとインストールを担当する「Ports Collection⁠⁠、Ports Collectionから生成されたバイナリパッケージをインストールする「Packages」です。Ports Collectionの管理には「portupgrade」「portmaster」などのサードパーティツールが使われることが多く、Packagesの管理はベースシステムにインストールされているpkg_*系のコマンドを使うことが多いと言えます。

Packagesはよく言えばシンブル、悪く言えば設計と実装が古く不完全、すでにアップグレードや改良も遅々とした前世代のメカニズムであり実装です。そもそも最初の実装がかなり手抜きで実装されたところがあり、その後さまざまな工夫を凝らして現在に至っているものの、抜本的にこれ以上改善をするのは得策ではないところまで来ているところがあります。

「pkgng」はこうした状況を改善すべく新しく開発が進められているパッケージ管理システムで、要するにUbuntuの「apt」やFedoraの「yum」のようなより進んだパッケージ管理システムをFreeBSDでも実現しよう、という取り組みです。Ports Collectionを置き換えるものではなく、pkg_installなどのpkg_*系コマンドを置き換えるものだと考えるとわかりやすいでしょう。

現行のPackagesが最も不得意とするのがパッケージのアップグレード操作です。仕組み上、安全に完全なアップグレードを実施することが不可能です。/var/db/pkg/以下の完全性を保ち続けるのも難しく、不要なパッケージを自動削除するのも手動での作業が必要になるところがあります。⁠pkgng」はこうした不満を解消し、aptやyumで実現されているのと同レベルの機能をFreeBSDにもたらすことを目指しています。

問題視されつつもここまでバイナリパッケージ管理システムの開発が実施されなかったのは、Ports Collectionに原因があるとも言えます。⁠portupgrade」「portmaster」を使っている限り、アップデートで特に困ることはありません。常に最新のアプリを追うことができますし、カスタムビルドを使い続けることができるといった便利さもあって、開発者やアドバンスドユーザは好んでPorts Collectionを使うため、バイナリパッケージからインストールしたり、バイナリパッケージレベルでアップグレードを実施するpkg_*系の必要性を感じることが少ないのです。

しかし、仮想環境の台頭で事情は変わりつつあります。複数の仮想環境でいくつものFreeBSDインスタンスを管理するといったことが日常になってくると、それらすべての環境でPorts Collectionを使うというのはプロセッサリソースの無駄と言えます。何らかのバイナリパッケージメカニズムが必要になります。ここで、現在のPackagesはアップグレードの面で不満が残ります。Ports Collectionが提供する最新のアプリを使うことができるという利便性はそのままに、aptやyumのように手軽にアプリを管理したい、という要望が増えてきたということになります。

「pkgng」はそうした要望に応える次世代のFreeBSDバイナリパッケージ管理システムです。FreeBSD 10系の大きな目玉機能の1つになるものと見られます。

おすすめ記事

記事・ニュース一覧