Debianパッケージのcontrolファイル
書式:control
説明
各Debianパッケージは、マスターとなる‘control’ファイルをもっている。
この‘control’ファイルは、いくつかのフィールドを含んでいる。
それぞれのフィールドはPackageやVersion(大文字小文字は区別しない)のようなタグで始まり
コロン、フィールドの本体という順序で記述されている。
フィールドはフィールドタグによってのみ区切られている。
別の言い方をすれば、フィールドテキストは複数行にまたがってもかまわない。
しかしインストールに使うツールはそれらのフィールドの本体を処理する時に一行にまとめてしまう。
(ただし、以下で説明するDescriptionフィールドは例外である)
必須フィールド
Package: <パッケージ名>
このフィールドの値によってパッケージ名が決まる。
またインストールに使うツールのほとんどがファイル名を生成するために使う。
Version: <バージョン文字列>
普通は、これはパッケージのプログラムの作者が利用しているパッケージのバージョン番号である。
(Debian独自のパッケージでない場合は)Debianリビジョン番号が追加される。
もし、バージョンとリビジョン両方を使う場合にはそれらはハイフン‘−’により区切られている。
このために、オリジナルのバージョンにはそのバージョン番号にハイフンを使うことができない。
Maintainer: <名前 email>
‘JoeBloggs
パッケージ化されたソフトウェアの作者ではなく、パッケージ作成者の名前およびe−mailアドレスを使うことになっている。
Description: <短い説明>
<長い説明>
パッケージ説明の書式は、まず最初の行("Description"フィールドタグの後)が短い要約である。
その後に続く行はより長い詳細な説明に使う。
長い説明の各行は空白文字ではじまる。
行頭のスペースに続けて’.’一つだけの行は空行を意味する。
オプションのフィールド
Section: <セクション>
パッケージによりインストールされるソフトウェアがどのカテゴリーに属するかを示すフィールドである。
一般的なセクションは‘utils’や‘net’、‘mail’、‘text’、‘x11’などがある。
Priority: <優先度>
システム全体からみてこのパッケージの重要度を示す。
一般的に使われる優先度としては‘required’、‘standard’、‘optional’、‘extra’などがある。
Debianでは、SectionとPriorityフィールドで使える値はポリシーマニュアルで決められている。
これらはアーカイブでどのようにパッケージが配置されるかを決定するのに使われている。
これらのリストは最新のdebian−policyパッケージの中に含まれている。
Essential:
このフィールドは普通は‘yes’の時にだけ使う。
これはパッケージがシステムを適切に運用するために必要とされるパッケージを示す。
dpkgや他のインストールに使うツールは(強制オプションを与えない限り)
Essentialパッケージを削除することを許さない。
Architecture:
このパッケージがどのタイプのハードウェアむけにコンパイルされたものかどうかを示す。
一般的なarchitectureとしては‘i386’,‘m68k’,‘sparc’,‘alpha’,‘powerpc’などがある。
allオプションはパッケージがarchitectureに依存しないことを意味する。
例えば、シェルスクリプトやPerlスクリプト、文書などはarchitectureがallとなる。
Source: <ソース名>
このバイナリパッケージを作るために使われたソースパッケージの名前である。
バイナリパッケージの名前とソースパッケージの名前が違う時に使われる。
Depends: <パッケージリスト>
このパッケージが重要な機能を提供するために必要としているパッケージのリスト。
パッケージ管理ソフトウェアは、もしこのDependsフィールドにあげられているパッケージがインストールされていなければ(強制オプションがあたえられない限り)このパッケージをインストールしようとしない。
またDepends: フィールドにあげられているパッケージのpostinstスクリプトを、それらに依存しているパッケージがprermスクリプトを実行しようとする前に実行しようとする。
Pre−Depends: <パッケージリスト>
パッケージがインストールされて、かつそのパッケージがインストールできる前に設定が終わっていないといけないパッケージのリスト。
これは通常このパッケージが他のパッケージをpreinstスクリプトで利用する場合に使われる。
Recommends: <パッケージリスト>
余程のことがなければ、このパッケージとともにインストールされるべきパッケージのリスト。
ユーザがこのRecommendsフィールドにあげられているパッケージなしにパッケージをインストールしようとするとパッケージ管理ソフトウェアが警告することがある。
Suggests: <パッケージリスト>
このパッケージに関連していて、より便利にするパッケージだが、なくてもかまわないパッケージのリスト。
Depends,Pre−Depends,Recommends,Suggestsフィールドは、代替パッケージグループのリストで表現する。
各代替グループではパッケージを縦棒(もしくは‘パイプ’)記号‘|’で区切る。
グループはコンマで区切る。
コンマは‘AND’と解釈し、パイプは‘OR’と解釈することができる。
パイプ(OR)の方が演算の優先度が高くなっている。
オプションで、それぞれのパッケージ名に続けて括弧でくくられたバージョン番号の指定ができる。
バージョン番号が‘>>’ではじまる場合は、それ以降のバージョン全てにマッチする。
バージョン番号は、ハイフンに続けてDebianパッケージリビジョンを指定してもよいし、省略してもよい。
バージョン関係を示す記号としては、">>"「より新しい」、"<<"「より古い」、">="「同じか新しい」、"<="「同じか古い」、"="「同じ」がある。
Conflicts: <パッケージリスト>
このパッケージと衝突するパッケージのリスト。
例えば同じファイル名をもっている場合など、パッケージ管理ソフトウェアは衝突しているパッケージ同士を同時にインストールできないようにしている。
二つの衝突しているパッケージがそれぞれがお互いをConflictsに書いておくべきである。
Replaces: <パッケージリスト>
このパッケージが置き換えるファイルを含むパッケージのリスト。
このパッケージが他のパッケージのファイルを上書きするのを許すために使われる。
また衝突しているパッケージと同じファイルを含んでいる場合Conflictsフィールドと共に使うことで他のパッケージを強制的に削除することを指示するために使われる。
Provides: <パッケージリスト>
このパッケージが提供する仮想パッケージのリスト。
通常はこれは複数のパッケージがまったく同じサービスを提供している場合に使われる。
例えば、sendmailとeximは共にメールサーバとしての機能を提供しているので、これらは共通のパッケージ(‘mail−transport−agent’)を提供し、他のパッケージはこの‘mail−transport−agent’に依存するようにしておく。
こうすることで、sendmailもeximも依存関係を満たすようにすることができる。
これによりメールサーバに依存するパッケージが、メールサーバとなるパッケージ全てのパッケージ名を知る必要もなく、また‘|’を使って列挙する必要もなくなる。
Conflicts,Replaces,Providesはパッケージ名をコンマで区切って表記する(空白はあってもかまわない)。
Conflictsフィールドの中では、コンマは‘OR’と解釈できる。
ConflictsとReplacesフィールドでは、上記のフィールドと同じ表記でバージョンも指定することができる。
例.
Package: grep
Essential: yes
Priority: required
Section: base
Maintainer: WichertAkkerman
Architecture: sparc
Version: 2.4−1
Pre−Depends: libc6(>=2.0.105)
Provides: rgrep
Conflicts: rgrep
Description: GNUgrep,egrepandfgrep.
TheGNUfamilyofgreputilitiesmaybethe"fastestgrepinthewest".
GNUgrepisbasedonafastlazy−statedeterministicmatcher(about
twiceasfastasstockUnixegrep)hybridizedwithaBoyer−Moore−Gosper
searchforafixedstringthateliminatesimpossibletextfrombeing
consideredbythefullregexpmatcherwithoutnecessarilyhavingto
lookateverycharacter.Theresultistypicallymanytimesfaster
thanUnixgreporegrep.(Regularexpressionscontainingbackreferencing
willrunmoreslowly,however).