FreeBSD Daily Topics

2010年11月1日パッケージをバイナリパッチでアップグレードするpkg_patch(1)、統合へ向けて作業

2010Q3 FreeBSD Status Reportが公開されました。報告されている中から興味深い話題を紹介します。

Binary Package Patch Infrastructure - pkg_patch

Google Summer of Code 2010の一環としてpkg_patch(1)の開発が実施されました。pkg_patch(1)自身の開発はすでに完了しています。現在はpkg_patch(1)をFreeBSDにマージするために必要になるほかの関連ツールの変更検討が進められています。pkg_patch(1)がどういったツールであるかはIvanVoras/pkg_patch - FreeBSD Wikiに詳しくまとまっています。

FreeBSDのパッケージはPorts Collectionから生成されます。パッケージはインストールしたファイルとインストール場所、依存関係などのメタデータを含んでいます。このパッケージから必要になるものをシステムにインストールしたり、逆にアンインストールしたりするためのコマンドが、pkg_からはじまる一連のコマンドです。

これまでのパッケージ管理では、アプリケーションやライブラリのアップグレードは、一旦対象となるパッケージをアンインストールしてから、新しいバージョンをインストールするという手順を踏んでいました。

pkg_patch(1)はそうではなく、インストールされている既存のバイナリそのものを直接変更することでアップグレードを実施しようという取り組みです。FreeBSDはバイナリとバイナリの差分を取るbsdiff(1)と、バイナリパッチをバイナリに適用するbspatch(1)を持っています。pkg_patch(1)はこの機能を活用してインストールされているバイナリを直接アップグレードしようという試みです。

FreeBSDはカーネルおよびデフォルトのユーザランドツールについてはFreeBSD Updateでバイナリアップデート可能です。pkg_patch(1)はこれをパッケージからインストールしたサードパーティアプリケーションに対しても適用可能にするもので、ベースシステムにマージされたあとは、カーネル、システム、サードパーティアプリケーションも含めてバイナリアップグレードが実施できるようになります。サーバ管理やアップグレード作業の負荷の軽減や自動化を補助する機能として注目されます。

おすすめ記事

記事・ニュース一覧