第6章 特別な配慮

port を作成する場合、 考慮しなくてはいけないことが他にもいくつかあります。 このセクションでは、それらのうちでも特によくあることについて説明します。

6.1. 共有ライブラリ

その port が共有ライブラリのインストールを行なう場合、 make 変数 INSTALLS_SHLIB を定義してください。 これにより、bsd.port.mkpost-install ターゲットの実行時に新しいライブラリがインストールされたディレクトリ (通常は PREFIX/lib) に ${LDCONFIG} -m を実行し、 共有ライブラリキャッシュへの登録が行なわれるようになります。 また、この変数が定義されている場合、共有ライブラリを インストールしたユーザが それをすぐに使い始められるように、 また、削除の際には そのライブラリが まだ存在していると システムに誤認されないように、 適切な @exec /sbin/ldconfig -m@unexec /sbin/ldconfig -R のペアが pkg-plist ファイルに 指定されているように扱われます。

必要であれば、 共有ライブラリがインストールされるディレクトリのリストを格納する make 変数 LDCONFIG_DIRS を定義することにより、 新しいライブラリがインストールされるデフォルトの位置を上書きすることも可能です。 例えば、その port が共有ライブラリを PREFIX/lib/fooPREFIX/lib/bar に インストールする場合、Makefile で以下の記述を使用することができます:

INSTALLS_SHLIB= yes
LDCONFIG_DIRS=  %%PREFIX%%/lib/foo %%PREFIX%%/lib/bar

pkg-plist の他の部分と同様に、 LDCONFIG_DIRS の内容も sed(1) による処理が行なわれるため、ここでも PLIST_SUB に指定した置換が行なわれることに注意してください。 PREFIX には %%PREFIX%% を、 LOCALBASE には %%LOCALBASE%%, X11BASE には %%X11BASE%% を使用することを推奨します。

6.2. 配布制限がある ports

ライセンスにはさまざまなものがあり、なかには、 アプリケーションをパッケージ化するやり方、営利目的で販売できるか、 といったことに制限をかけているものがあります。

port 作成者として、あなたには、使用許諾条件をよく読み、 FTP/HTTP または CD-ROM で再配布してはいけないソースコードやコンパイルされたバイナリを配布してしまい、 その責任が FreeBSD プロジェクトにかかってくることのないよう注意する義務があります。 疑わしい場合には FreeBSD ports メーリングリスト で聞いてみてください。

そのような場合、次の節で説明されている変数が設定できます。

RESTRICTED は、それだけを設定すれば済むように、暗黙のうちに NO_CDROMNO_PACKAGE を設定します。それに対して、 NO_PACKAGENO_CDROM は独立で、同時に設定可能です。

6.2.1. NO_PACKAGE

この変数が設定されていたら、 このアプリケーションのバイナリパッケージを作成してはいけないということです。 ただし、この port の DISTFILES は自由に配布できます。

また、NO_PACKAGE は、バイナリパッケージが汎用的ではなく、 いつもアプリケーションをソースコードからコンパイルすべき場合にも利用すべきです。 たとえば、アプリケーションにサイト特有の設定情報がコンパイル時にハードコードされるような場合には、 NO_PACKAGE を設定してください。

NO_PACKAGE には、 パッケージを作成すべきではない理由を述べた文字列を設定すべきです。

6.2.2. NO_CDROM

この変数は、バイナリパッケージの作成は許可されていますが、 その package や port の DISTFILES を販売用の CD-ROM (や DVD-ROM) に載せるのは許されていないことを表します。なんにせよ、 バイナリパッケージと port の DISTFILES は、FTP/HTTP で入手できます。

NO_CDROM には、その port が何故 CD-ROM で再配布できないか説明する文字列を設定するべきです。 これはたとえば、その port のライセンスが"非商用" 利用に限っている場合に使うべきです。

6.2.3. RESTRICTED

アプリケーションのライセンスが、FTP/HTTP で、そのアプリケーションの DISTFILES をミラーすることや、 バイナリパッケージを配布することを禁じていたら、 この変数を設定してください。

RESTRICTED には、その port が何故再配布できないか説明する文字列を設定するべきです。 典型的な場合としては、その port がプロプライエタリなソフトウェアを含んでいて、 DISTFILES を、おそらくソフトウェアに関する登録を行ったり、 EULA を承諾した後で、 手動でダウンロードしなければならないことを表します。

6.2.4. RESTRICTED_FILES

RESTRICTEDNO_CDROM が設定されている時は、この変数はデフォルトで ${DISTFILES} ${PATCHFILES} になります。それ以外は空です。 一部の配布ファイルだけに制限がかかっていたら、 この変数にそのファイルのリストを設定してください。

port committer は、設定した配布ファイル毎に /usr/ports/LEGAL に制限の内容を説明する項目を追加すべきことに注意してください。

6.3. perl の利用

表 1. perl を使用する ports 用の変数
変数意味

USE_PERL5

その port のビルドと実行に perl 5 を使用することを示します。

USE_PERL5_BUILD

その port をビルドするのに perl 5 を使用することを示します。

USE_PERL5_RUN

その port を実行するのに perl 5 を使用することを示します。

PERL

システムまたは port からインストールされた perl 5 の完全なパスからバージョン番号を省いたもの。 スクリプトの “#!” 行を置き換える必要があれば使ってください。

PERL_CONFIGURE

Perl の MakeMaker を使ってコンフィグレーションを行います。暗黙のうちに USE_PERL5 を設定します。

6.4. X11 の利用

表 2. X を利用する ports 用の変数

USE_X_PREFIX

その port は PREFIX ではなく X11BASE にインストールされます。

USE_XLIB

その port は X ライブラリを使用します。

USE_MOTIF

その port は Motif ツールキットを使用します。 USE_XPM が自動的に設定されます。

USE_IMAKE

その port は imake を使用します。USE_X_PREFIX が自動的に設定されます。

XMKMF

xmkmfPATH にない場合にパスを設定してください。 デフォルトは xmkmf -a になります。

6.5. automake, autoconf および libtool の利用

表 3. automake, autoconf または libtool を使用する ports 用の変数
変数意味

USE_AUTOMAKE

その port は automake を使用します。 USE_AUTOCONFUSE_AUTOMAKE_VER?=14 が自動的に設定されます。

AUTOMAKE

automakePATH に含まれない場合のフルパス。

USE_AUTOMAKE_VER

その port は automake を使用します。この変数の有効な値は 1415 で、AUTOMAKE_DIR および ACLOCAL_DIR 変数が適切な値に設定されます。

AUTOMAKE_ARGS

USE_AUTOMAKE_VER が設定されていた場合に AUTOMAKE に渡す 1 つまたはそれ以上のコマンドライン引数

AUTOMAKE_ENV

AUTOMAKE を実行する前に設定する 1 つまたはそれ以上の環境変数 (とその値)

ACLOCAL

GNU aclocalPATH にない場合にパスを設定してください。デフォルトは USE_AUTOMAKE_VER 変数に応じて設定されます。

ACLOCAL_DIR

GNU aclocal の共有ディレクトリのパスを設定してください。 デフォルトは USE_AUTOMAKE_VER 変数に応じて設定されます。

AUTOMAKE_DIR

GNU automake の共有ディレクトリのパスを設定してください。 デフォルトは USE_AUTOMAKE_VER 変数に応じて設定されます。

USE_AUTOCONF_VER

その port が autoconf を使用することを指定します。デフォルト値は 213 です。

USE_AUTOCONF

その port が autoconf を使用することを指定します。GNU_CONFIGURE および USE_AUTOCONF_VER?=213 を自動的に設定します。

AUTOCONF

GNU autoconfPATH にない場合にパスを設定してください。デフォルトは USE_AUTOCONF_VER 変数の値に応じて設定されます。

AUTOCONF_ARGS

autoconf に渡すコマンドライン引数

AUTOCONF_ENV

この変数で指定された 変数=値 の組を autoconf を実行する前に環境変数として設定してください。

AUTOHEADER

GNU autoheaderPATH にない場合にパスを設定してください。デフォルトは USE_AUTOCONF_VER の値に応じて設定されます。

AUTORECONF

GNU autoreconfPATH にない場合にパスを設定してください。デフォルトは USE_AUTOCONF_VER に応じて設定されます。

AUTOSCAN

GNU autoscanPATH にない場合にパスを設定してください。デフォルトは USE_AUTOCONF_VER に応じて設定されます。

AUTOIFNAMES

GNU autoifnamesPATH にない場合にパスを設定してください。デフォルトは USE_AUTOCONF_VER に応じて設定されます。

USE_LIBTOOL

その port は libtool を使用します。GNU_CONFIGURE を自動的に設定します。

LIBTOOL

libtoolPATH にない場合にパスを設定してください。

LIBTOOLFILES

libtool 用のパッチファイル。 デフォルトは USE_AUTOCONF が設定されていれば aclocal.m4、 それ以外は configure です。

LIBTOOLFLAGS

ltconfig に追加で渡すフラグ。 デフォルトは --disable-ltlibs

6.6. GNOME の利用

FreeBSD/GNOME プロジェクトは、ある特定の port が使っている GNOME コンポーネントを特定するために 独自の変数群を使っています。 FreeBSD/GNOME プロジェクトのページに その変数のわかりやすい一覧 があります。

6.7. KDE の利用

表 4. KDE を利用する ports 用の変数

USE_QT_VER

その port は Qt ツールキットを使用します。 設定できる値は、 1, 2 および 3 で、それぞれ使用する Qt のメジャーバージョンを示します。 これは、MOCQTCPPFLAGS をデフォルトの適切な値に設定します。

USE_KDELIBS_VER

その port は KDE ライブラリを使用します。 設定できる値は、 1, 2 および 3 で、それぞれ使用する KDE のメジャーバージョンを示します。 暗黙で USE_QT_VER に適切なバージョンを設定します。

USE_KDEBASE_VER

その port は KDE base を使用します。 設定できる値は、 1, 2 および 3 で、それぞれ使用する KDE のメジャーバージョンを示します。 暗黙で USE_KDELIBS_VER に適切なバージョンを設定します。

MOC

moc へのパスを設定してください。 デフォルトでは、USE_QT_VER の値に応じて設定されます。

QTCPPFLAGS

Qt のコードを処理する際の CPPFLAGS を設定してください。デフォルトでは USE_QT_VER の値に応じて設定されます。

6.8. Bison の利用

この節はまだ書かれていません。

6.9. Java の利用

あなたが作成している port の構築、実行、 または配布ファイルの展開に Java™ 開発キット (JDK) が必要なら、USE_JAVA を定義してください。

Ports Collection には、さまざまなベンダの JDK のいろいろなバージョンがあります。 あなたが作成している port がその中のいずれかのバージョンを使わなければならないなら、 どれを使うか指定できます。最新のバージョンは、 java/jdk14 です。

表 5. Java を利用する ports で定義すべき変数
変数意味

USE_JAVA

この後の変数を有効にするには、 この変数を定義しなければなりません。

JAVA_VERSION

スペースで区切られた、適合する Java のバージョン一覧。"+" を使ってバージョンの範囲を指定することもできます (使える値は、 1.1[+] 1.2[+] 1.3[+] 1.4[+]) です)。

JAVA_OS

スペースで区切られた、その port に適合する JDK port の OS 一覧。(使える値は、 native linux) です。

JAVA_VENDOR

スペースで区切られた、その port に適合する JDK port のベンダの一覧。(使える値は、 freebsd bsdjava sun ibm blackdown) です。

JAVA_BUILD

この変数が設定されていると、選択した JDK を、その port の構築依存性に追加します。

JAVA_RUN

この変数が設定されていると、選択した JDK を、その port の実行依存性に追加します。

JAVA_EXTRACT

この変数が設定されていると、選択した JDK を、その port の展開依存性に追加します。

USE_JIKES

その port の構築に jikes バイトコードコンパイラを使うべきかどうかを示します。 この変数に何の値も設定されていない時は、port は jikes が使えたら構築に利用します。 jikes の利用を明示的に禁止したり、 強制したりすることも可能です ('no''yes' を設定してください)。 後者の場合は、devel/jikes が port の構築依存性に追加されます。

以下は、USE_JAVA を設定した port で行われる設定の一覧です。

表 6. Java を利用する ports で設定される変数
変数

JAVA_PORT

JDK port の名称 (例: 'java/jdk14')。

JAVA_PORT_VERSION

JDK の完全なバージョン (例: '1.4.2')。最初の数字 2 つだけしか必要でなければ、 ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/} を使ってください。

JAVA_PORT_OS

JDK port が利用する OS (例: 'linux')。

JAVA_PORT_VENDOR

JDK port のベンダ (例: 'sun')。

JAVA_PORT_OS_DESCRIPTION

JDK port が利用する OS の説明 (例: 'Linux')。

JAVA_PORT_VENDOR_DESCRIPTION

JDK port のベンダの説明 (例: 'FreeBSD Foundation')。

JAVA_HOME

JDK がインストールされているディレクトリのパス (例: '/usr/local/jdk1.3.1')。

JAVAC

使用する Java コンパイラのパス (例: '/usr/local/jdk1.1.8/bin/javac' または '/usr/local/bin/jikes')。

JAR

使用する jar ツールのパス (例: '/usr/local/jdk1.2.2/bin/jar' または '/usr/local/bin/fastjar')。

APPLETVIEWER

appletviewer ユーティリティへのパス (例: '/usr/local/linux-jdk1.2.2/bin/appletviewer')。

JAVA

java 実行ファイルへのパス。 Java プログラムの実行にはこれを使ってください (例: '/usr/local/jdk1.3.1/bin/java')。

JAVADOC

javadoc ユーティリティプログラムへのパス。

JAVAH

javah プログラムへのパス。

JAVAP

javap プログラムへのパス。

JAVA_KEYTOOL

keytool ユーティリティプログラムへのパス。 この変数は、JDK が Java 1.2 以上の場合のみ利用可能です。

JAVA_N2A

native2ascii ツールへのパス。

JAVA_POLICYTOOL

policytool プログラムへのパス。この変数は、JDK が Java 1.2 以上の場合のみ利用可能です。

JAVA_SERIALVER

serialver ユーティリティプログラムへのパス。

RMIC

RMI スタブ/スケルトンジェネレータ rmic へのパス。

RMIREGISTRY

RMI レジストリプログラム rmiregistry へのパス。

RMID

RMI デーモンプログラム rmid へのパス。この変数は、JDK が Java 1.2 以上の場合のみ利用可能です。

JAVA_CLASSES

JDK クラスファイルが入っているアーカイブへのパス。 JDK 1.2 以降では、これは ${JAVA_HOME}/jre/lib/rt.jar です。 それより前の JDK は、 ${JAVA_HOME}/lib/classes.zip を使います。

Port のデバッグ情報を得るのに、 java-debug make ターゲットが使えます。 これは、前述の変数の多くについて値を表示します。

6.10. Python の利用

この節はまだ書かれていません。

6.11. Emacs の利用

この節はまだ書かれていません。

6.12. Ruby の利用

この節はまだ書かれていません。

6.13. SDL の利用

USE_SDL 変数は、 devel/sdl12x11-toolkits/sdl_gui など、SDL ベースの ports への依存を自動設定するのに使われます。

今のところ、次の SDL ライブラリが認識されます。

したがって、ある port が net/sdl_netaudio/sdl_mixer に依存していたら、構文は次のようになります。

USE_SDL=	  net mixer

net/sdl_netaudio/sdl_mixer が必要とする devel/sdl12 の依存も自動的に追加されます。

USE_SDL を使うと、以下のことが自動的に行われます。

  • BUILD_DEPENDS に sdl11-config への依存を追加します。

  • CONFIGURE_ENVSDL_CONFIG 変数を追加します。

  • LIB_DEPENDS に選択したライブラリへの依存を追加します。

SDL ライブラリが利用できるかどうか調べるためには、 WANT_SDL 変数を使ってください。

WANT_SDL=yes

.include <bsd.port.pre.mk>

.if ${HAVE_SDL:Mmixer}!=""
USE_SDL+=   mixer
.endif

.include <bsd.port.post.mk>

最終更新日: 2021年12月11日 by Sergio Carlavilla Delgado