Prototypeファイルは、パッケージに関する情報を記述したテキストファイルである。パッケージの制作者が作成し、pkgmkコマンドにより使用される。
ファイル中の各エントリには、単一の配布オブジェクトについての情報が記載される。一般的に、配布オブジェクトはデータファイルや実行可能ファイルなどである。
各エントリは、空白で区切られた複数のフィールドによって構成される。
なお、"#"で始まる行はコメントと見なされる。
# コメント
フィールド1 フィールド2 フィールド3 …… |
上記のピンク色の行一つが、一つのエントリを構成する。エントリ一つで一つのファイルについて記述する。
各フィールドは、下記に示された順に記述されなければならない。
part
記録されている各オブジェクトを識別するための番号。省略可能。
パートはファイルの集合であり、パッケージを処理する際に、分割不可能な固まりとして取り扱われる。
パッケージの制作者は、ファイルをパートに分類する際の基準を任意に選ぶ事ができる。例えばクラスで分割する事も可能である。
もし、このフィールドが指定されていなかった場合には、1であると仮定される。
ftype
ファイルの種別を示す一文字。
| 文字 |
説明 |
| b |
ブロックデバイス |
| c |
キャラクタデバイス |
| d |
ディレクトリ |
| e |
インストール・アンインストール時に編集されるファイル(複数のパッケージで共有されルファイルなど) |
| f |
通常の実行バイナリやデータファイル |
| i |
インストールスクリプトもしくは情報ファイル |
| l |
リンク |
| p |
名前付きパイプ |
| s |
シンボリックリンク |
| v |
一時ファイル(ログのように変更が予測されるファイル) |
| x |
このパッケージでのみ参照する事ができるディレクトリ |
class
ファイルが属する、インストールクラス。
クラス名は12文字以下のアルファベットである必要がある。また、"admin"と大文字で始まるクラス名は予約されている。
インストール・スクリプトの場合は、このフィールドは省略される。
pathname
ターゲットのマシンのどこにコピーされるか、を表すパス名。相対パスはそのファイルが再配置可能である事を示す。
path1=path2の形式は、リンクもしくはローカルのパス名を示すために使用される。
リンクファイルの場合、path1はリンク対象のファイルを示し、path2はリンク元のファイルを示す。
ローカルパスの場合、path1はインストール先マシンでのインストール先パス名を示し、path2はパッケージ作成を行うマシンでの、実際のファイルを表す相対ないし絶対パスを表す
major
メジャーデバイス番号
ブロックデバイスかキャラクタデバイスでのみ使用する。
minor
マイナーデバイス番号
ブロックデバイスかキャラクタデバイスでのみ使用する。
mode
ファイルのパーミションを示す8進数。
owner
ファイルの所有者を示す14文字以下の文字列。(UID)
このフィールドはリンクもしくはパッケージ情報ファイルでは使用されない。
group
ファイルの所有者が属するグループを示す14文字以下の文字列。(GID)
このフィールドはリンクもしくはパッケージ情報ファイルでは使用されない。
pathname・mode・owner・groupには、変数を使用する事ができる。変数名は「$変数名」という形式で使用される。
小文字で始まる変数はビルド変数であり、大文字で始まる変数はインストール変数である。
ビルド変数は、変数の値がパッケージのビルド時に決定される。
インストール変数のうち、値がビルド時に決定できるものについては、インストール時にその値を使用する事ができるように、pkginfoファイルに値が記録される。
それ以外のものは、インストール時に値が決定される。
mode・owner・groupには、値として"?"を使用する事ができる。
これは、既存のファイルの属性値を変更しない事を示す。なお、この値を指定した場合は、当該のファイルがターゲットのホストに必ず存在する事を示す事になる。
行頭に"!"を記述した場合、その行はコマンドとして扱われる。
コマンドには下記のものを使用する事ができる。
search
ホストマシンに存在するファイルを検索するための、ディレクトリのパスを指定する。各パス名は空白で区切る
ここで指定したディレクトリ名は、pathnameフィールドに記述したファイル名と連結されて、ファイルの検索が行われる。
ディレクトリ名は先頭から順に使用され、適合するファイルが見つかるまで繰り返される。
include
インクルードする別のPrototypeファイルを指定する。
ただし、searchに指定したディレクトリ名は、includeに指定したファイル名には適用されない。
default
デフォルトとして使用する属性(mode,owner,group)を指定する。この属性は、各エントリで必要な情報が提供されていない場合に使用される。
デフォルト値の設定は、インクルードされたファイルには適用されない。
param=value
変数を設定する。
この設定はインクルードされたPrototypeファイルの中でも有効となる。
インストール対象のマシンに、とあるファイルをインストールしようとしたときに、同名のファイルがすでに存在していた場合、そのファイルは一旦テンポラリの領域に複製されてから、上書きされる。
ただし、そのファイルに実行属性が付いていて編集不可能であった場合(ftypeにeが指定されていた場合)、当該のファイルはテンポラリの領域にリンクが作成されてから、上書きされる。
インストール対象のマシンに、Prototypeファイルに記述されたファイルが存在しなかった場合は、そのファイルはインストール中に作成される事になる。
ただし、そのファイルのパス名にディレクトリ名が含まれており、そのディレクトリが存在しなかった場合には、ファイルの生成は行われない。
例えば、Prototypeファイルに下記のエントリが含まれていた場合
f none /usr/dev/bin/command
このファイルが存在せずに/usr/dev/binが存在する、もしくはPrototypeファイルに下記のエントリが含まれる場合には、このファイルは自動的に生成される。
d none /usr/dev/bin
それ以外の場合には、/usr/dev/bin/commandは生成されない。