FreeBSD Daily Topics

2012年5月14日Ports Collectionワーキンググループ報告

ports

FreeBSD Ports WG

FreeBSDで利用するサードパーティ製ソフトウェアやライブラリは通常Ports Collection経由でインストールや管理が実施されます。しかし、数百台や数千台といったPCのアプリケーションを管理する場合、Ports Collectionは煩雑といった面があります。

また、ビギナーユーザや特定の機能のみを利用するビジネスユーザは、Ports Collectionのような開発者向けのフレームワークよりも、バイナリパッケージレベルでのアプリケーション管理を好む傾向があります。

FreeBSDのPortsチームはこの1年間、こうした要望を実現するためのアイディア出し、基盤システムの更新、議論や作業を重ねてきました。特にこの1年間で実施した内容としては次の項目が注目されます。

  • FreeBSDパッケージビルドクラスタのアップデート
  • Redports分散Tinderboxシステムの構築と運用開始
  • Ports CollectionのFreeBSD 10対応(ダブルディジット問題。作業継続中)
  • 次世代パッケージ管理フレームワークpkgngの開発と公開

FreeBSDパッケージビルドクラスタのH/WはFreeBSD Foundationの支援のもとで新しいH/Wへ移行しました。すべてのアーキテクチャとサポートブランチに対してパッケージを提供し続けるには高い性能のビルドクラスタH/Wが必要となります。今回のH/W更新でpkgngの実現へ向けたH/W的な基盤をクリアしやすくなったといえます。

Redportsは誰でも自由に利用できるport試験ビルドサービスです。portはさまざまなアーキテクチャとリリースバージョンに対して、クリーンな状態でビルド可能である必要があります。こうした試験環境をcommitterやメンテナがすべて自前で用意するのは無理があります。Redportsはこうした目的で利用できるサービスで、今後多くのports committerやportsメンテナが活用することで品質の向上が期待されます。

Ports CollectoinのClangビルド対応、FreeBSD 10ビルド対応は現在開発中です。FreeBSDはこれまでシステムやPorts CollectionのビルドをGCCを前提にしてきました。しかしここ数年、ベンダからの要望やGPLv3ライセンスのコードをベースにマージしないという方針から、GCCにかわるコンパイラが求められています。

LLVM Clangは現在もっとも採用が有力視されているコンパイラで、amd64/i386カーネル/ユーザランドはほぼ対応を終えています。Ports CollectionもClangへの対応が求められています。最終的にはGCCやClangを実行時に切り替えてビルドできるようにするフレームワークがPorts Collectionに導入される見通しです。

FreeBSD 10対応は、ビルドツールが10というバージョンの最初の1文字だけを理解して、バージョン1と誤認する問題に対応する取り組みです。ビルドツールを対応させるほか、個々のportsを修正する必要があります。現在作業が進められている段階にあります。

向こう1年間の作業としては次の内容が予定されています。

  • バージョン管理システムをCVSからSVNへ移行
  • コンパイラの動的切り替え機能の導入
  • OptionsNGの導入
  • FreeBSD 10を目処にpkgngのデフォルト化

バージョン管理システムをCVSからSVNへ移す最大の理由は、pkgngで必要とされる機能を満たすにはCVSよりもSVNの方が都合が良いことが多いから、というものです。リアルタイムでリポジトリのコピーを実施する必要があり、タグ付けもより簡単に実現できる必要があります。

OptionsNGはPorts Collectionで指定するオプションの挙動の一貫性を向上させようという取り組みです。たとえば現在の実装ではWITH_HOOとWITHOUT_HOOが指定できた場合、portAではWITH_HOOを指定しても何も処理されずWITHOUT_HOOを指定したときだけ処理が実行される、portBではこの逆、といったように、こうした部分での挙動に決まりがありません。OptionsNGはこうした挙動をまとめあげるフレームワークです。

Ports Collectionは現在もソフトウェアの登録数を伸ばしています。現在の取り組みが実現すれば1週間おきに最新のソフトウェアにバイナリアップデートを実施できる手軽なバイナリパッケージ管理機能が実現されることになります。既存のUNIX系ディストリビューションは半年といった周期でバイナリパッケージを更新しています。これと比べ、pkgngでは1週間ごとに最新版へのアップグレードができることになります。既存のUNIX系ディストリビューションと比較て特徴的な機能が実現されると言えます。

おすすめ記事

記事・ニュース一覧