Chapter 18. 構築や実行のために必要なツール

Table of Contents

18.1. pkgsrc 構築用のツール
18.2. パッケージが必要とするツール
18.3. プラットフォーム附属のツール
18.4. ツールに関する質問

USE_TOOLS 定義は、 パッケージを構築するためにどのコマンドが必要か (BUILD_DEPENDS のように)、 あるいは、インストールしたパッケージを実行するためにどのコマンドが必要か (DEPENDS のように) を定義するために、 pkgsrc 内部で使われており、また、個々のパッケージ用としても使われています。 適当なツールがシステムに標準で附属していれば、多くの場合は pkgsrc のパッケージは使われません。

パッケージを構築するときは、実行検索パスの前のほうにあるディレクトリーに、 代替ツールが (シンボリックリンクまたはラッパースクリプトとして) 用意されます。 buildlink システムと同様に、 こうすることで、首尾一貫した構築ができるようになります。

あるツールは、パッケージの構築を補助するために必要となることがあります。 たとえば、perl, GNU make (gmake), yacc はこのために必要になることがあります。

また、あるツールは、たとえば、システム標準附属のツールでは pkgsrc によるパッケージの構築用としては使い物にならないために、 必要となることがあります。 たとえば、パッケージが GNU awk, (yacc ではなく) bison や、 より優れた sed を必要とすることがあります。

パッケージが使うツールの実体は、 make show-tools を実行すると一覧表示されます。

18.1. pkgsrc 構築用のツール

pkgsrc が標準状態で使うツール一式は、 bsd.pkg.mk で定義されています。ここには、 cat, awk, chmod, test などのような標準的な Unix のツールが含まれています。 これらは make show-var VARNAME=USE_TOOLS を実行すると見ることができます。

個々のパッケージの構築のためにあるプログラムが必要な場合は、 USE_TOOLS 変数を使って 必要なツールを定義することができます。

18.2. パッケージが必要とするツール

以下の例では、:pkgsrc は、構築時依存性として、 ネイティブのバージョンではなく pkgsrc のバージョンを使うことを意味します。 また、:run は、実行時依存性としても使うことを意味します (ので、DEPENDS になります)。 このようなものを付けない場合は、構築時依存性を意味します。これは :build を明示的に使って設定することもできます。 (このため、以下の例のものは、それぞれ gmake:build および pkg-config:build と同じことです。)

USE_TOOLS+=     mktemp:pkgsrc
USE_TOOLS+=     gmake perl:run pkg-config

このツールの枠組を使う時には、 TOOLS_PATH.foo 変数が、 適切なツールへのフルパスとして定義されます。 たとえば、TOOLS_PATH.bash は Linux システム上では /bin/bash になったりするでしょう。

実行時に常に pkgsrc バージョンのツールが必要となる場合は、 この枠組ではなく、単に DEPENDS を使ってください。

18.3. プラットフォーム附属のツール

pkgsrc の改良、あるいは新プラットフォームへの移植をする時には、 pkgsrc/mk/tools/tools.${OPSYS}.mk 以下にある、 対象プラットフォーム用の make file の断片を見て (あるいは作って) ください。 このファイルでは、たとえば以下のように、共通的に使うツールの名前を定義しています。

.if exists(/usr/bin/bzcat)
TOOLS_PLATFORM.bzcat?=          /usr/bin/bzcat
.elif exists(/usr/bin/bzip2)
TOOLS_PLATFORM.bzcat?=          /usr/bin/bzip2 -cd
.endif

TOOLS_PLATFORM.true?=           true                    # shell builtin

18.4. ツールに関する質問

18.4.1. 新しいツールを追加する方法は?
18.4.2. 利用可能なツールの全一覧を見る方法は ?
18.4.3. あるパッケージの構築に使われているツールの全一覧を見る方法は? sed が使われているかどうかを知りたいんだけど。

18.4.1.

新しいツールを追加する方法は?

TODO

18.4.2.

利用可能なツールの全一覧を見る方法は ?

TODO

18.4.3.

あるパッケージの構築に使われているツールの全一覧を見る方法は? sed が使われているかどうかを知りたいんだけど。

今のところ、できません。 (TODO: が、 できるようにしたいと考えています。)