14.2. PREFIX

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

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

そのアプリケーションが 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 が そのまま使える可能性が高くなります。

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