FreeBSD port 作成者のためのハンドブック
Prev | Chapter 15. やっていいことといけないこと | Next

# 15.12. `PREFIX`

なるべく port は `PREFIX` に対する相対パスにインストールすることができるように心がけてください (この変数の値は `USE_X_PREFIX` か `USE_IMAKE` が指定してある時には `X11BASE` (デフォルトは `/usr/X11R6`), そうでない場合には`LOCALBASE` (デフォルトは `/usr/local`) にセットされます).

サイトによってフリーソフトウェアがインストールされる場所が違いますので, ソース内で `/usr/local` や `/usr/X11R6` を明示的に書かないようにしてください. X のプログラムで `imake` を使うものについては, これは問題にはなりません. それ以外の場合にはソース中の Makefile やスクリプトで `/usr/local` (imake を使わない X のプログラムは `/usr/X11R6`) と書いてあるところを `PREFIX` に書き換えてください. この値は port のコンパイルおよび, インストール時に自動的に環境変数として下位 make に渡されます.

そのアプリケーションが `PREFIX` を 使用しないで, 何かを直接 `/usr/local` に インストールしないことを確認してください. 以下のようにすると, 簡単なテストを行なうことができます:

    # make clean; make package PREFIX=/var/tmp/port-name

この時, もし `PREFIX` の外に 何かがインストールされていた場合, package 生成プロセスは ファイルが見つからないと文句を言うはずです.

ただし, これは そのソフトウェアが内部で決め打ちの参照を していないかどうか だとか, 他の port によってインストールされる ファイルを参照する際に `LOCALBASE` を 正しく使用しているかどうかをテストしているわけではありません. その port を他の場所にインストールした状態で, `/var/tmp/`port-name`` に 対するインストールを試みることにより, そのテストをすることができるでしょう.

`USE_X_PREFIX` は本当に必要な時 (つまり X のライブラリをリンクしたり, `X11BASE` 以下にある ファイルを参照したりする必要がある時) 以外には 設定しないでください.

変数 `PREFIX` の値は port の Makefile やユーザの環境で変更することもできます. しかし, 個々の port が Makefile でこの変数の値を明示的に設定することはなるべくしないでください.

また, 他の port によりインストールされるプログラムや ファイルを指定する場合には, 直接的なパス名を使用するのではなく 上で述べた変数を使用してください. たとえば `less` のフルパスを `PAGER` というマクロに入れたい場合は, `-DPAGER=\"/usr/local/bin/less\"` というフラグをコンパイラに渡すかわりに

    -DPAGER=\"${PREFIX}/bin/less\"

(X Window System を使う port の場合には

    -DPAGER=\"${LOCALBASE}/bin/less\"

) を渡してください. こうしておけば, システム管理者が ``/usr/local'' を まるごと どこか他の場所に移していたとしても, その port が そのまま使える可能性が高くなります.

Prev | Home | Next
再帰的 diff | Up | ディレクトリ構成

FreeBSD ports システムに関する質問は、(英語で) <ports@FreeBSD.org> へ、
この文書の原文に関するお問い合わせは、(英語で) <doc@FreeBSD.org> までお願いします。