インターネットでは通常, tarball の形で プログラムが配布されています. これは, Makefile とソースコードで構成され, 普通は何らかの説明書 (あいにく, いつもわかりやすく書かれているとは 限りませんが) が付属しています. ことによるとコンフィグレーションスクリプトも含まれているかもしれません.
標準的な手順では, FTP で tarball を入手して, 適当なディレクトリで展開します. 次に説明書を読んで, 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の make コマンドを使ってソースのコンパイルとインストールをおこないます.
FreeBSD の ports も tarball の仕組みを利用していますが, これはユーザが 苦労して作業することを期待したものではなく, どのようにすれば FreeBSD 上で そのプログラムが動くようになるかという「ノウハウ」を スケルトン を使用して収めているものです. スケルトンは, カスタマイズ済みの Makefile も 提供していますので, ほとんどすべての ports は同じ手順でインストールすることが できます.
もしあなたが (あなたの FreeBSD システム または FTP サイト にある) ports スケルトンを見ていて, そこに潜んでいる あらゆる種類の先端的なロケット工学的なものを見つけられると期待していると, つまらなそうなファイルやディレクトリがそこにあるだけなのを見て, がっかりするかもしれません. (ports を手に入れる方法については, すぐに FreeBSD ports コレクションの入手方法 の節でお話します.)
「一体どうしたらいいんだ? ここにはソースコードが全然ないじゃないか?」 というあなたの叫びが聞こえるようです.
心配いりません. おとなしく読んでいけば, すべてが (たぶん) 明らかに なるでしょう. 試しに ports をインストールして, 何が起きるのかを見てみましょう. かなり典型的な例だと思いますので, ここでは `bash' (Bourne-Again Shell として 知られています) を選びます.
Note 自宅で試してみる場合には, root になる必要があるでしょう.
# cd /usr/ports/shells/bash # make install Checksums OK. ===> Extracting for bash-1.14.5 ===> Patching for bash-1.14.5 ===> Applying FreeBSD patches for bash-1.14.5 ===> Configuring for bash-1.14.5 ===> Building for bash-1.14.5 [とてもとても大量のメッセージをコンパイラが出力します...] ===> Installing for bash-1.14.5 make -f bash-Makefile bindir=/usr/local/bin prefix=/usr/local install (cd ./documentation/; make ) rm -f builtins.txt nroff -man builtins.1 > builtins.txt install -c -o bin -g bin -m 555 bash /usr/local/bin/bash install -c -o bin -g bin -m 555 bashbug /usr/local/bin/bashbug ( cd ./documentation/ ; make mandir=/usr/local/man/man1 man3dir=/usr/local/man/man3 infodir=/usr/local/info install ) [ -d /usr/local/man/man1 ] || mkdir /usr/local/man/man1 [ -d /usr/local/info ] || mkdir /usr/local/info ../support/install.sh -c -m 644 bash.1 /usr/local/man/man1 ../support/install.sh -c -m 644 builtins.1 /usr/local/man/man1/bash_builtins.1 ../support/install.sh -c -m 644 features.info /usr/local/info/bash.info gzip -9nf /usr/local/man/man1/bash.1 /usr/local/man/man1/bash_builtins.1 ===> Registering installation for bash-1.14.5
ここではあなたが混乱しないように, コンパイル時とインストール時の出力を 多少省略してあります. もしもあなた自身で実行されたら, 最初にこのような 出力結果を得るはずです:-
>> bash-1.14.5.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://slc2.ins.cwru.edu/pub/dist/.
`make' プログラムは, あなたの手元にソースコードがないことを検出し, 処理を続けられるようにソースを FTP でダウンロードしようとします. (結構すごいとは思いませんか? 8-)) この例では, あらかじめ手動でソースコードを用意してあったので, 持ってくる必要はありませんでした.
では, 続けて `make' プログラムが何をしているのか見てみましょう.
以上のステップが make の出力と一致するかどうか確認してください. 今まで確認していなかったのなら, 今からするようにしてください!