FreeBSD ハンドブック : アプリケーションのインストール : ports コレクション : ports コレクションはどのように動くのでしょうか?
Previous: なぜ ports コレクションを作ったのか?
Next: FreeBSD ports コレクションの入手

4.2. ports コレクションはどのように動くのでしょうか?

インターネットでは通常, 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' プログラムが何をしているのか見てみましょう.

  1. ソースコード tarball のありかを 確認します. 手元にファイルが存在しなければ, FTP サイトから入手しようとします.
  2. チェックサム テストを実行して, その tarball が事故か何かで途中で切れていたり, 転送中にニュートリノに よって傷められたりして改変されたりしていないかどうかを確認します.
  3. tarball を一時的な作業用ディレクトリに展開します.
  4. FreeBSD 上でコンパイルしたり, 動作させるのに必要な すべての パッチ をソースコードに当てます.
  5. 構築のために必要なコンフィグレーションスクリプトを実行します. コンフィグレーションスクリプトの質問には正確に答えてください.
  6. (いよいよ!) ソースコードをコンパイルします.
  7. 実行形式のプログラム, マニュアル, その他のサポートファイルを, システムのプログラムと混ざってしまわないように /usr/local 以下に インストールします. ports はすべて同じ場所にインストールされ, システムのあちこちにばらまかれることはありません.
  8. インストール結果はデータベースに登録されます. これにより, インストールしたプログラムがもしも気に入らなかったときも, システムから すべての痕跡をきれいに 消去 することができます.

以上のステップが make の出力と一致するかどうか確認してください. 今まで確認していなかったのなら, 今からするようにしてください!


FreeBSD ハンドブック : アプリケーションのインストール : ports コレクション : ports コレクションはどのように動くのでしょうか?
Previous: なぜ ports コレクションを作ったのか?
Next: FreeBSD ports コレクションの入手
FreeBSD Home Page
www@freebsd.org
Updated May 23, 1997