UNIX® システムを使ったことのある人なら、 サードパーティ製ソフトウェアの典型的なインストール手順が以下のようになることをご存知でしょう。
ソースコード、 またはバイナリ形式で配布されているソフトウェアをダウンロードする。
配布時のフォーマット (一般的には compress(1), gzip(1) または bzip2(1) で圧縮された tarball) からソフトウェアを取り出す。
ドキュメント (INSTALL または README ファイル、あるいは doc/ サブディレクト中のファイル) を探しだし、 ソフトウェアのインストール方法を調べる。
ソース形式でソフトウェアが配布されている場合はコンパイルを行う。 ここでは、Makefile の編集、 または、configure スクリプトの実行、 あるいは他の作業を伴うことがある。
ソフトウェアの動作を確認し、インストールする。
すべてがうまくいったならば、インストール作業は以上です。 もしインストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなければ、 適切に動くようコードを調べ、編集する必要があるかもしれません。
あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに “従来” の方法を使い続けることができます。 しかしながら、FreeBSD は インストール時にかかるたくさんの労力を軽減する 2 つの技術、 すなわち packages と ports を提供しています。 この文書を書いている時点では、24,000 を越えるサードパーティ製アプリケーションがこれらの方法で利用可能となっています。
FreeBSD package では、いかなるアプリケーションに対しても ダウンロードする必要のあるファイルはただ一つです。 package には、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントが含まれています。 FreeBSD に用意されている pkg_add(1), pkg_delete(1), pkg_info(1) といった package 管理コマンドで、 ダウンロードした package ファイルを扱うことができます。 新しいアプリケーションをインストールするには、 たった一つのコマンドを実行するだけです。
FreeBSD port は、 アプリケーションをソースコードからコンパイルする際の処理を自動化するように設計されたファイルの集まりです。
プログラムをコンパイルする時のことを思い出して下さい。 通常、とてもたくさんの手順 (ダウンロード、展開、パッチ作業、コンパイル、インストール) を踏まなくてはなりません。 port を構成するファイルは、 これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。 いくつかの簡単なコマンドを実行すると、 自動的にアプリケーションのソースコードがダウンロードされ、展開、 パッチ作業、コンパイル、そして、インストール作業が行われます。
さらに ports システムは、pkg_add コマンドや他の package 管理コマンドで扱うことのできる packages を生成できます。 これらのコマンドについては後の節で簡単に紹介します。
packages と ports は依存関係を理解します。 ある特定のライブラリに依存する アプリケーションをインストールするとします。 また、アプリケーションとライブラリは FreeBSD ports や packages によって 入手可能であるとします。 アプリケーションを追加するために pkg_add コマンドまたは ports システムを用いると、 インストールされていないライブラリが検出され、 先に依存するライブラリが自動的にインストールされます。
2 つの技術が非常に類似していて、 なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。 packages と ports にはそれぞれ独自の特徴があり、 どちらを使うかはあなたの好みによります。
package の利点
一般的に、あるアプリケーションの package の tarball は、 ソースコードを含む tarball より小さなサイズとなります。
packages はコンパイル作業を必要としません。 このことは、Mozilla, KDE, または GNOME といった大きなアプリケーションで重要となります。 特にシステムが遅い場合にはなおさら重要です。
packages を用いれば、 ソフトウェアのコンパイルに関する知識は必要ありません。
ports の利点
packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からインストールすることで、 たとえば Pentium 4 や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。
アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。
設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションがさらに用意されている場合は困難となります。
ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。
バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。
ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。
ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。
ports の更新状況を把握するために、 FreeBSD ports メーリングリスト や FreeBSD ports bugs メーリングリスト を購読するとよいでしょう。
警告アプリケーションをインストールする前に、 そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。
また、 インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる ports-mgmt/portaudit をインストールしてもよいでしょう。 このコマンドは、ビルド前の port についても調査します。 インストールされている packages を確認する場合には、 portaudit -F -a コマンドを使ってください。
この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアのインストール方法や管理方法について説明します。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で)
連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で)
送ってください。