FreeBSD port 作成者のためのハンドブック
前のページ | 第 14章port のテスト | 次のページ

# 14.2. `PREFIX`

なるべく port は `PREFIX` に対する相対パスにインストールすることができるように心がけてください (この変数の値は `USE_X_PREFIX` か `USE_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 が そのまま使える可能性が高くなります。

前のページ | ホーム | 次のページ
port のテスト | 上に戻る | FreshPorts 正当性テスト

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