external via @ichitaso

Welcome to the Underground World

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).


Source:Manpage for deb-control - man.cx manual pages