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

prototype ファイルへの機能の追加

prototype ファイルでは、各パッケージオブジェクトの定義に加えて、次の事項を行うことができます。

これらの変更を行う方法については、次の節を参照してください。

インストール時に作成される追加のオブジェクトの定義

prototype ファイルを使用して、実際にはインストールメディアに提供されないオブジェクトを定義できます。これらのオブジェクトは、インストール時に pkgadd コマンドを使用すると、インストール時にまだ存在しない場合、必要なファイルタイプで作成されます。

オブジェクトがターゲットシステムに作成されるように指定するには、適切なファイルタイプを指定した prototype ファイルにそのオブジェクトのエントリを追加します。

たとえば、ターゲットシステムにディレクトリを作成し、インストールメディアにはそのディレクトリを提供しない場合、prototype ファイル内でそのディレクトリに次のエントリを追加します。


d none /directory 0644 root other

ターゲットシステム上で空のファイルを作成する場合、prototype ファイル内での空のファイルに対するエントリは次のようになります。


f none filename=/dev/null 0644 bin bin

インストールメディアに提供されるオブジェクトは、通常ファイルおよび編集スクリプト (ファイルタイプ e vf) と、そのファイルおよびスクリプトを格納する必要があるディレクトリだけです。追加のオブジェクトは、提供されるオブジェクト、ディレクトリ、名前付きパイプ、デバイス、ハードリンク、およびシンボリックリンクを参照せずに作成されます。

インストール時のリンクの作成

パッケージのインストール時にリンクを作成するには、リンクオブジェクトのprototype ファイルエントリ内で次の内容を定義します。

パッケージが絶対パスまたは再配置可能としてインストールされるかどうかにかかわらず、相対リンクはこの方法で指定できます。

複数のボリュームにわたるパッケージの配布

pkgmk コマンドを使用してパッケージを構築すると、このコマンドにより、複数ボリュームのパッケージを編成するのに必要な計算と処理が実行されます。複数ボリュームのパッケージは、分割パッケージと呼ばれます。

ただし、prototype ファイル内で省略可能な part フィールドを使用して、配置するオブジェクトの部分を定義することもできます。このフィールドの数値が pkgmk コマンドに優先され、このフィールドに指定された部分にコンポーネントが強制的に配置されます。ファイルシステムとしてフォーマットされたリムーバブルメディアでは、各部分と各ボリューム間に一対一の対応が存在します。ボリュームが開発者によって事前に割り当てられている場合、 容量が不足しているボリュームが存在すると pkgmk コマンドでエラーが発生します。

prototype ファイルの入れ子化

複数の prototype ファイルを作成し、!include コマンドを使用してそれらのファイルを prototype ファイルに組み込むことができます。保守を容易にするために、ファイルを入れ子にすることもできます。

次の例では、prototype ファイルが 3 つあります。メインファイル (prototype) は編集します。その他の 2 つのファイル (proto2proto3) は組み込みます。


!include /source-dir/proto2
!include /source-dir/proto3

mode フィールド、owner フィールド、および group フィールドのデフォルト値の設定

mode フィールド、 owner フィールド、および group フィールドにデフォルト値を設定するには、!default コマンドを prototype ファイルに挿入します。次に例を示します。


!default 0644 root other

注 –

!default コマンドの範囲は、コマンドの挿入位置から始まり、ファイルの末尾までに及びます。コマンドの範囲は、組み込まれたファイルには適用されません。


ただし、ターゲットシステム (/usr または /etc/vfstab など) に存在することがわかっているディレクトリ (ファイルタイプ d) および編集可能なファイル (ファイルタイプ e) の場合、 prototype ファイル内で mode フィールド、owner フィールド、および group フィールドを疑問符 (?) に設定する必要があります。これにより、サイト管理者が変更した可能性がある既存の設定が破棄されません。

pkgmk コマンドの検索パスの指定

パッケージオブジェクトのソースの場所がターゲットの場所と異なり、「オブジェクトのソースおよびターゲットの場所の簡略な記述」で説明されているpath1=path2 形式を使用しない場合、prototype ファイル内で !search コマンドを使用できます。

たとえば、ホームディレクトリに pkgfiles というディレクトリを作成し、そのディレクトリにすべての情報ファイルとインストールスクリプトが含まれる場合、pkgmk コマンドでパッケージを構築するときにこのディレクトリが検索されるように指定できます。

prototype ファイル内のこのコマンドは次のようになります。


!search /home-dir/pkgfiles

注 –

検索要求は、組み込まれたファイルには適用されません。また、検索は、リストされた特定のディレクトリに制限され、再帰的には検索しません。


環境変数の設定

!PARAM=value 形式の prototype ファイルには、コマンドを追加することもできます。この形式のコマンドは、現在の環境の変数を定義します。複数の prototype ファイルを使用する場合、このコマンドのスコープは、コマンドが定義されている prototype ファイルに対してローカルです。

変数 PARAM は、小文字または大文字で始めることができます。PARAM 変数の値が構築時に不明な場合、pkgmk コマンドはエラーで中断されます。構築変数とインストール変数の違いについては、「パッケージ環境変数」を参照してください。