アプリケーションパッケージ開発者ガイド

path フィールド

path フィールドは、パッケージオブジェクトがターゲットシステムに存在する場所を定義するために使用されます。絶対パス名 (例: /usr/bin/mail) または相対パス名 (例: bin/mail) を使用して場所を示すことができます。絶対パス名を使用すると、ターゲットシステム上のオブジェクトの場所はパッケージによって定義され、変更できません。パッケージオブジェクトに相対パス名が含まれる場合、オブジェクトが再配置可能になります。

再配置可能オブジェクトには、ターゲットシステム上の絶対パスの場所は必要ありません。代わりに、オブジェクトの場所はインストールプロセス中に決定されます。

パッケージのオブジェクトのすべてまたは一部を再配置可能として定義できます。インストールスクリプトを記述したり、prototype ファイルを作成したりする前に、パッケージオブジェクトの場所を固定 (/etc 内の起動スクリプトなど) するか、または再配置可能にするかを決定します。

再配置可能オブジェクトには、集合的再配置可能個別再配置可能の 2 種類があります。

集合的再配置可能オブジェクト

集合的再配置可能オブジェクトは、ベースディレクトリと呼ばれる共通のインストールベースに対して配置されます。ベースディレクトリは、BASEDIR パラメータを使用して pkginfo ファイルに定義されます。たとえば、tests/generic という名前の prototype ファイル内にある再配置可能オブジェクトは、pkginfo ファイルにデフォルトの BASEDIR パラメータが定義されていることを必要とします。次に例を示します。


BASEDIR=/opt

この例の場合、オブジェクトをインストールすると、そのオブジェクトは /opt/tests/generic ディレクトリに配置されます。


注 –

/opt ディレクトリは、ベースの Solaris ソフトウェアに含まれないソフトウェアが提供される可能性がある唯一のディレクトリです。


できる限り、集合的再配置可能オブジェクトを使用してください。通常、ほとんどのパッケージは、絶対パスで指定された一部のファイル (/etc or /var 内のファイルなど) で再配置できます。ただし、パッケージに多くの異なる再配置が含まれる場合には、pkginfo ファイル内で個別の BASEDIR 値を指定してパッケージを複数のパッケージに分割することを検討してください。

個別再配置可能オブジェクト

個別再配置可能オブジェクトは、集合的再配置可能オブジェクトと同じディレクトリの場所に制限されません。個別再配置可能オブジェクトを定義するには、prototype ファイル内の path フィールドにインストール変数を指定する必要があります。インストール変数を指定したら、インストーラに対して再配置可能なベースディレクトリを要求する request スクリプトを作成するか、ファイルシステムデータからパス名を決定する checkinstall スクリプトを作成します。request スクリプトについては、request スクリプトの書き込み」を参照してください。また、checkinstall スクリプトについては、「ファイルシステムデータを収集する方法」を参照してください。


注意 – 注意 –

個別再配置可能オブジェクトは管理が困難です。個別再配置可能オブジェクトを使用すると、パッケージコンポーネントが広範囲に分散する場合があり、パッケージの複数のバージョンまたはアーキテクチャーをインストールする場合にコンポーネントを特定するのが困難になります。できる限り、集合的再配置可能オブジェクトを使用してください。


パラメータ型パス名

パラメータ型パス名は、変数指定が含まれるパス名です。たとえば、/opt/$PKGINST/filenameは、$PKGINST という変数指定があるのでパラメータ型のパス名になります。変数指定のデフォルト値を pkginfo ファイルに定義します。この値は、request スクリプトまたは checkinstall スクリプトで変更される可能性があります。

パス内の変数指定は、パス名で開始または終了するか、斜線 (/) で囲みます。有効なパラメータ型パス名は、次のような形式をとります。


$PARAM/tests
tests/$PARAM/generic
/tests/$PARAM

変数指定を定義すると、パスは絶対パスまたは再配置可能なパスとして評価される可能性があります。次の例では、prototype ファイルに次のようなエントリが含まれます。


f none $DIRLOC/tests/generic

pkginfo ファイルには、次のエントリが含まれます。


DIRLOC=/myopt

パス名 $DIRLOC/tests/generic は、BASEDIR パラメータが pkginfo ファイルに設定されているかどうかに関係なく、絶対パス名 /myopt/tests/generic と評価されます。

この例では、prototype ファイルは前の例のものと同一であり、pkginfo ファイルには次のエントリが含まれます。


DIRLOC=firstcut
BASEDIR=/opt

パス名 $DIRLOC/tests/generic は、再配置可能なパス名 /opt/firstcut/tests/generic と評価されます。

パラメータ型のパス名については、「パラメータ型ベースディレクトリの使用」を参照してください。

オブジェクトのソースおよびターゲットの場所の簡略な記述

prototype ファイル内の path フィールドは、オブジェクトがターゲットシステムに配置される場所を定義します。パッケージオブジェクトのディレクトリ構造がターゲットシステム上で意図された構造を模倣していない場合、prototype ファイル内でのパッケージオブジェクトの現在の場所を指定します。パッケージ内でのオブジェクトの構造化については、「パッケージのコンテンツの編成」を参照してください。

パッケージの目的の構造と同じように開発領域が構造化されていない場合、path フィールドで path1=path2 という形式を使用できます。この形式では、path1 はターゲットシステム上でのオブジェクトの場所であり、path2 は使用中のシステム上でのオブジェクトの場所です。

また、path1=path2 というパス名の形式を使用する場合、path1 を再配置可能なオブジェクト名に指定し、使用中のシステム上での対象のオブジェクトへのフルパス名に path2 を指定することもできます。


注 –

path1 には、未定義の構築変数を含むことはできませんが、未定義のインストール変数は含むことができます。path2 では、構築変数とインストール変数の両方を使用することができますが、未定義の変数を含むことはできません。インストール変数と構築変数の違いについては、「パッケージ環境変数」を参照してください。


リンクは pkgadd コマンドで作成するので、リンクには path1= path2 形式を使用します。一般的な規則として、リンクの path2 は絶対リンクにはせず、path1 のディレクトリの一部を基準とした相対リンクにするようにしてください。

path1=path2 形式の代わりに、!search コマンドを使用することもできます。詳細については、pkgmk コマンドの検索パスの指定」を参照してください。