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

prototype ファイルの形式

prototype ファイルでの各行の形式を次に示します。


partftypeclasspathmajorminormodeownergroup

part

パッケージ オブジェクトを細かくグループ化できる、省略可能な数値フィールドです。デフォルト値は part 1 です。 

ftype

オブジェクトの種類を指定する、1 文字のフィールドです。「ftype フィールド」を参照してください。

クラス

オブジェクトが属するインストールクラスです。class フィールド」を参照してください。

path

パッケージオブジェクトがターゲットシステムに存在する場所を示す、絶対パス名または相対パス名です。path フィールド」を参照してください。

major

ブロック特殊デバイスまたは文字特殊デバイスのためのメジャーデバイス番号です。 

minor

ブロック特殊デバイスまたは文字特殊デバイスのためのマイナーデバイス番号です。 

mode

オブジェクトの 8 進数モードです (例: 0644)。mode フィールド」を参照してください。

owner

オブジェクトの所有者です (例: bin または root)。owner フィールド」を参照してください。

group

オブジェクトが属するグループです (例: bin または sys)。group フィールド」を参照してください。

通常では、ftype フィールド、class フィールド、path フィールド、mode フィールド、owner フィールド、および group フィールドだけを定義します。これらのフィールドについては、次の節で説明します。これらのフィールドに関する追加情報については、prototype(4) のマニュアルページを参照してください。

ftype フィールド

ftype (ファイルタイプ) フィールドは 1 文字のフィールドであり、パッケージオブジェクトのファイルタイプを指定します。次の表は、有効なファイルタイプについて説明しています。

表 2–3 prototype ファイルの有効なファイルタイプ

ファイルタイプのフィールド値 

ファイルタイプの説明 

f

標準の実行可能ファイルまたはデータファイル 

e

インストールまたは削除時に編集するファイル (複数のパッケージで共有する可能性があります) 

v

揮発性ファイル (このコンテンツは変更することが想定されています。例: ログファイル) 

d

ディレクトリ 

x

このパッケージでのみアクセスできる排他的なディレクトリ (登録されていないログやデータベース情報を含む可能性があります) 

l

リンクファイル 

p

名前付きパイプ 

c

文字特殊デバイス 

b

ブロック特殊デバイス 

i

情報ファイルまたはインストールスクリプト 

s

シンボリックリンク 

class フィールド

class フィールドは、オブジェクトが属するクラスを指定します。クラスの使用は、省略可能なパッケージ設計機能です。この機能は、 「クラスアクションスクリプトの書き込み」で詳細に説明されています。

クラスを使用しない場合、オブジェクトは none クラスに属します。pkgmk コマンドを実行してパッケージを構築すると、コマンドによって CLASSES=none パラメータがpkginfo ファイルに挿入されます。ファイルタイプ i が指定されたファイルには、空白の class フィールドが 1 つ含まれます。

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 コマンドの検索パスの指定」を参照してください。

mode フィールド

mode フィールドには、8 進数、疑問符 (?)、または変数指定を含める可能性があります。8 進数は、ターゲットシステムにオブジェクトをインストールするときにオブジェクトのモードを指定します。? は、オブジェクトのインストール時にモードを変更しないことを示します。つまり、同じ名前のオブジェクトがターゲットシステム上にすでに存在することを意味します。

変数指定の形式 $mode では、変数の最初の文字を小文字で記述し、対象のフィールドはパッケージの構築時に設定されます。この変数は、prototype ファイルの作成時、または pkgmk コマンドのオプションとしての作成時に定義します。インストール変数と構築変数の違いについては、「パッケージ環境変数」を参照してください。

ファイルタイプ i (情報ファイル)、l (ハードリンク)、および s (シンボリックリンク) が指定されたファイルでは、このフィールドを空白のままにしてください。

owner フィールド

owner フィールドには、ユーザー名、疑問符 (?)、または変数指定を含める可能性があります。ユーザー名は、最大 14 文字であり、ターゲットシステム上にすでに存在する名前にしてください (bin または root など)。? は、オブジェクトのインストール時に所有者を変更しないことを示します。つまり、同じ名前のオブジェクトがターゲットシステム上にすでに存在することを意味します。

変数指定は、$Owner または $owner の形式 (変数の最初の文字が大文字または小文字) を使用できます。変数が小文字で始まる場合、prototype ファイル内または pkgmk コマンドのオプションとして、パッケージの構築時に変数が定義されます。変数が大文字で始まる場合、変数指定は pkginfo ファイルにデフォルト値として挿入され、インストール時に request スクリプトによって再定義される可能性があります。インストール変数と構築変数の違いについては、「パッケージ環境変数」を参照してください。

ファイルタイプ i (情報ファイル) と l (ハードリンク) が指定されたファイルでは、このフィールドを空白のままにしてください。

group フィールド

group フィールドには、グループ名、疑問符 (?)、または変数指定を含める可能性があります。グループ名は、最大 14 文字であり、ターゲットシステム上にすでに存在する名前にしてください (bin または sys など)。? は、オブジェクトのインストール時にグループを変更しないことを示します。つまり、同じ名前のオブジェクトがターゲットシステム上にすでに存在することを意味します。

変数指定は、$Group または $group の形式 (変数の最初の文字が大文字または小文字) を使用できます。変数が小文字で始まる場合、prototype ファイル内または pkgmk コマンドのオプションとして、パッケージの構築時に変数が定義されます。変数が大文字で始まる場合、変数指定は pkginfo ファイルにデフォルト値として挿入され、インストール時に request スクリプトによって再定義される可能性があります。インストール変数と構築変数の違いについては、「パッケージ環境変数」を参照してください。

ファイルタイプ i (情報ファイル) と l (ハードリンク) が指定されたファイルでは、このフィールドを空白のままにしてください。