高負荷に対する強さやネットワークスタックへの評価から、エッジサーバとしてのニーズが高かったFreeBSDだが、現在ではストレージシステムや高性能アプライアンス、組み込みデバイスなどの分野でもてはやされている。ライセンスの関係でLinux系のディストリビューションが採用できない場合などにも選択されるディストリビューションだ。今回は、このFreeBSDのパッケージ管理システムについて取り上げたい。
FreeBSDのパッケージ管理システム「pkg(8)」
従来のFreeBSDは、パッケージ管理ではなく、ソースコードからビルドする「Ports Collection」を多用していた。しかし、「yum(8)」や「apt(8)」が台頭し、それらのコマンドの便利さを目の当たりにして、パッケージ管理システムを刷新するに至ったのである。そして導入されたのが、「pkg(8)」だ。
pkg(8)と、yum(8)やapt(8)の最大の違いは、pkg(8)がPorts Collectionとシームレスに統合されている点にある。yum(8)やapt(8)は、パッケージと、自前でソースコードからビルドしたパッケージを共存管理することが難しい。だが、pkg(8)では、Ports Collectionと連動することでこれが容易に実現できるのだ。特にオプション指定などで独自ビルドを使い続ける必要がある場合、FreeBSDは便利だろう。
では、CentOSやUbuntuのパッケージ管理システムを紹介したときと同様に、tree(1)コマンドのパッケージをインストールするケースを考えてみよう。
まだ「tree」というコマンドが存在しないので実行できない |
pkg(8)の使い方は、yum(8)やapt(8)とほとんど同じだ。yum(8)やapt(8)を使ったことがあれば、マニュアルやヘルプを見なくても数回のトライ&エラーですぐ使えるようになるだろう。
まず、tree(1)コマンドのパッケージを検索する。それには、「pkg search 《パッケージ名》」のようにコマンドを実行すればよい。
このとき、「pkg search -f 《パッケージ名》」のようにオプション「-f」を指定すると、対象パッケージの詳細情報を確認できる。
-fオプションを指定すると、対象パッケージの詳細を表示できる |
次に、「pkg install 《パッケージ名》」でパッケージをインストールする。途中で確認を求められることなく一気にインストールしたいなら、「pkg install -y 《パッケージ名》」のように-yオプションを指定しておく。
「pkg install 《パッケージ名》」でパッケージをインストールできる |
インストールしたパッケージは、すぐに利用できる。また、もしアンインストールしたい場合は「pkg remove 《パッケージ名》」を実行すればよい。
「pkg remove 《パッケージ名》」でパッケージをアンインストールできる |
このように、pkg(8)の使い方はyum(8)やapt(8)とよく似ている。この点においては、どのディストリビューションを使っていても、大きな違いを感じることはないだろう。
適用範囲が広がるpkg(8)
FreeBSDプロジェクトは現在、カーネルやユーザランドのアップグレードをFreeBSD Updateからpkg(8)に移行する取り組みを進めている。早ければ、FreeBSD 11.1以降に導入されそうだ。また、これまでWindowsやMac OS Xと同じようなパッケージを提供してきたPC-BSDもpkg(8)の適用を進めている。pkg(8)は、今後も使われるシーンが増えそうだ。
pkg(8)自体も積極的に開発されており、パッケージビルドのクラスタシステムの開発も進んでいる。最近は、amd64/i386のパッケージセットは数日ごとにまるごと最新版にアップデートされている。ARMやMIPS、PowerPC向けのパッケージビルドクラスタも今後強化され、今よりも短いタイムスパンで最新版に更新されることになるだろう。まったく、便利な時代になったものだ。
今回のおさらい
今回のおさらいは、次のとおりだ。
- FreeBSDで使われるパッケージ管理インタフェースはpkg(8)
- 「pkg search 《ターゲット》」で検索
- 「pkg search -f 《ターゲット》」でパッケージの詳細情報表示
- 「pkg install 《ターゲット》」でパッケージインストール
- 「pkg remove 《ターゲット》」でパッケージアンインストール
なお、毎日のようにアップデートするのではなく、もっとゆっくりしたペースのアップデートを望む企業やユーザー向けに、四半期ごとのパッケージセットも提供されている。そうしたパッケージを採用するのも、1つの手だ。