パッケージ作成 - 2. パッケージ記述
2.1 ツリーレイアウト
パッケージ記述はディレクトリ /opt/sw/fink/dists
下のディレクトリ finkinfo
から読み込まれます.
「ツリー」の設定はファイル /opt/sw/etc/fink.conf
にあり,これでどのディレクトリを読むかを指定します.
パッケージ記述ファイルの名前は,Fink パッケージの正式名称に拡張子 ".info" を付けたものです.
Fink 0.13.0 以降では,パッケージのアップデートの手間を省くための,
「パッケージ名」に拡張子 ".info" を付けただけの簡略形式が便利です.
fink 0.26.0 の時点で,ファイル名を特定するにはいくつかの方法があります:
推奨されるのは,他の必要なパッケージファイルと整合性のとれる最も短いものです.
ファイル名の形式は: variant のないパッケージ名,オプションとして architecture,オプションとして distribution,オプションとして version または version-revision を
ハイフンでつなぎ,".info" で終えます.
"architecture" と "distribution" は,対応するフィールドが定義され,値を一つだけ持つ場合に限ります.
パッケージ記述ツリーはいくつかの階層のディレクトリにまとめられています. 最上段から順の説明:
-
ツリーは
dists
から始まる.dists
ディレクトリは Debian ツールで必須. 最近の fink では,ディストリビューションのわかるディレクトリへの symlink になっている. -
ディストリビューション.
stable
,unstable
,local
に分かれる. ディレクトリlocal
は各システムの管理者とユーザが管理する. ディレクトリstable
とunstable
は Fink システムの一部. -
ツリー.
ツリー
main
にはパッケージの大部分が含まれる. 2010年7月1日以前は,暗号を使うソフトウェアは別ツリーcrypto
に収められていたが, 現在はmain
以下の1セクションになっている. -
finkinfo
またはbinary-darwin-powerpc
.finkinfo
は Fink のパッケージ記述とパッチを含み,binary-darwin-powerpc
は.deb
形式のバイナリパッケージを含む. -
セクション.
ツリー
main
は,管理しやすくするために種類別に分類されている.
2.2 ファイル形式
パッケージ記述ファイルはキーと値の組 (別名「フィールド」) の単純なリストです. 次のように,各行はキーで始まり,コロン (:) 以降が値になります:
Key: Value
複数行に渡らざるを得ないフィールドには 2 通りの記法があります.
1 つ目はシェルスクリプトで言う "here-document" 風の形式で,こちらの方が望ましいです.
この方式では,第1行は,キー,コロンの次に値として <<
が続くものになります.
その後の行が全て実質的な値となり,行頭に <<
を置いた行が値の終端区切りです.
例:
InstallScript: << mkdir -p %i/share/man make install prefix=%i mandir=%i/share/man mkdir -p %i/share/doc/%n install -m 644 COPYING %i/share/doc/%n <<
この形式ではインデントを付けて構いません. その方が読みやすくなるでしょう.
here-document 形式はネストできます.
これはフィールド SplitOff
や SplitOffN
でよく使われます.
これらのフィールドは他の (複数行の) フィールドを含むことができ,
here-document 形式を使えば含まれる方のフィールドにも複数行の値が使えます.
内側でも同じ区切り <<
が使われます.
SplitOff: << Package: %N-shlibs InstallScript: << ln -s %p/lib/libfoo.2.dylib %i/lib/libfoo.%v.dylib << <<
この形式では,空行と,シャープ (#) で始まる行は無視されます.
キー (フィールド名) では大文字と小文字の区別がないので,
InstallScript
を installscript
や INSTALLSCRIPT
とも書けますが,
最初の InstallScript
という方式が読み易いのでこれを使いましょう.
真偽値を取るフィールドでは "true", "yes", "on", "1" (大文字,小文字の区別なし)
のいずれも「真」となり,それ以外は全て「偽」になります.
2.3 パーセント展開
簡便のため, Fink はいくつかのフィールドで以下の文字列展開をサポートします.
曖昧さをさけるため,波括弧を使ってどの文字までがパーセント展開を受けるのかを明示できます.
例えば %{n}
は %n
と同義です.
%n |
name.「パッケージ名」. |
%N |
Name.親パッケージの「パッケージ名」. ( |
%e |
epoch.パッケージの「エポック」. |
%v |
version.「バージョン」. |
%V |
パッケージの完全な Version で, Epoch がある場合にはこれも自動的に追加されます.
|
%r |
revision.パッケージの「リビジョン」. |
%f |
full package name.%n-%v-%r と等価.
エポックは |
%p, %P |
prefix.Fink のインストール場所.例: |
%d |
destination.パッケージ化するツリーのビルド先.
例: |
%D |
Destination.
親パッケージのビルド先 ( |
%i |
完全な install-phase prefix.インストール段階での一時インストールディレクトリの完全名. %d%p と等価. |
%I |
Install prefix.
親パッケージのインストール段階での一時インストールディレクトリの完全名.
%D%Pと等価 ( |
%a |
patches. パッチを検索するディレクトリパス. |
%b |
build.
ビルドディレクトリ.例: 注記: %b は使わざるを得ないときだけ使用して下さい. ビルドディレクトリはスクリプトが実行されるときのカレントディレクトリです. コマンドでは相対パス名を使わなければいけません. |
%c |
configure に渡すパラメータ: |
%m |
machine architecture.
マシンアーキテクチャーを示す記号で, |
%% |
パーセント記号そのもの (これ以降にどの文字が続いても展開されない). 展開は厳密に左から右に行われるので, %%n はパッケージ名とは一切関係なく,単なる文字列 %n を表すことになる. (fink-0.18.0 で導入) |
%type_raw[タイプ], %type_pkg[タイプ], %type_num[タイプ] |
指定された タイプ のサブタイプを返す疑似ハッシュ.
詳細は後述のフィールド |
%{ni}, %{Ni} |
"name invariant". %n や %N と似ているが, %type_pkg[] と %type_raw[] に当たる部分は全て空白に変わる. (0.19.2 CVS 版以降の Fink で利用可能) %n や %N を使った際の混乱を避けるためには %{ni} や %{Ni} を使うこと. |
%{default_script} |
|
%{PatchFile} |
|
%{PatchFileN} |
|
%lib |
|