Debian packaging manual - 第5章
バージョン番号付け

全てのパッケージは、コントロールファイルのVersionフィール ドにバージョン番号を持っています。

dpkg はバージョン番号に従って順序付けるようになっています。 これによって、dpkg はパッケージがアップグレードされるのか、 あるいは、ダウングレードされるのかを知ることができ、さらに、 dselect は利用できるパッケージがシステムにインストールされ ているものよりも新しいかどうかを知ることができます。バージョン番号の形 式は(比較に関する限り)初めの方に最上位部分を持っています。

バージョン番号のフォーマットは、 [epoch:]upstream-version[-debian-revision] です。

ここには3つの構成要素があります:

epoch
これは1桁の符号なし整数です。普通は小さい数に なるはずです。ゼロの場合は省略しても構いません。省略した時には、 upstream-version にコロンを含んではいけません。

これはパッケージの古いバージョンのバージョン番号の誤りを許すため、また、 パッケージの以前のバージョン番号体系を残しておくためにあります。

dpkg は epoch が不可欠である場合(ゼロでない、または、 upstream-version がコロンを含んでいる場合)でなければ、通常 それを表示しません。dselect はパッケージ選択表示のメイン部 分において、全く epoch を表示しません。

upstream-version
これがバージョンの主要部分です。適 用可能であれば、これは通常、.deb ファイルが作られるオリジ ナルの(`上流の')パッケージのバージョン番号になります。通常、これは上流 の作者によって定められたものと同じ形式になります。しかしながら、 dpkg の形式と比較体系に合わせるために再形式化する必要がある かも知れません。

upstream-version に関する dpkg の比較の振る舞い は後で述べます。バージョン番号の upstream-version 部分は必 須です。

upstream-version は英数字と文字 + . - : (ピリオド、プラス、ハイフ ン、コロン)だけから構成されており、数字で始まります。ただし、 debian-revision がなければ、ハイフンは許されません。また、 epoch がなければ、コロンは許されません。

debian-revision
バージョンのこの部分は、そのパッケー ジを Debian バイナリパッケージにするためにほどこした修正のバージョン を表しています。これは upstream-version と同じ形式であり、 dpkg は同じやり方で比較を行います。

これはオプションです。これがなければ、upstream-version にハ イフンを含んではいけません。この形式のものは Debian バイナリパッケー ジになるように特別に書かれたソフトウェアであることを示しています。です から、そのソフトウェアの `Debian化 ' はたった一つだけあり、それゆえ、 リビジョンの表示は必要ありません。

upstream-version が増加するたびに、 debian-revision1から再スタートするのが慣習 となっています。

dpkg は文字列中の最後のハイフンのところで upstream-versiondebian-revision とに分割しよ うとします。debian-revision がないものは、それがあるものよ り以前のものであると比較されます(でも debian-revision はバー ジョン番号の最下位部分であることに注意して下さい)。

debian-revision は 英数字と文字 + . (プラスとピリオド)だけから構成されます。

upstream-versiondebian-revision の部分は、 dpkg によって同じアルゴリズムを使って比較されます:

文字列を左から右へと比較します。

最初に、全て非数字で構成される各々の文字列の最初の部分を決定します。 この2つの部分(そのうちの一つは空であっても構いません)は辞書順で比較し ます。もし違いが見つかれば、それを返します。辞書順の比較は拡張ASCII値 の比較であり、全ての文字は文字でないものよりも前に順位付けられます。

次に、全て数字で構成される各々の文字列の残りの最初の部分を決定します。 この2つの部分の数値を比較し、比較結果として見つかった違いを返します。 こうするために、空文字列(比較している一方もしくは双方のバージョン文字 列の末尾においてのみ生じる)はゼロとして数えます。

違いが見つかるか、双方の文字列を調べ尽くすかするまで、この2つのステッ プを(先頭から、最初の非数字の文字列と最初の数字の文字列を切り離しなが ら)繰り返します。

epoch の目的はバージョン番号付けのミスを残したまま、バージョン番号付け を変えるような状況をうまく処理できるようにすることだということに注意し て下さい。dpkg が解釈することのできない文字 (ALPHApre-)から成る文字列を含むバージョ ン番号や、思慮の浅い順序付け(このマニュアルの著者は 1.11.2, 1.3, 1, 2.1, 2.2, 2 などとバージョンが進んでいったパッケー ジを聞いたことがあります)をうまく処理するためではありません。

もし上流のパッケージが問題のあるバージョン番号になっているならば、 Version フィールドで使っている健全な形式に変換すべきです。

もしスクリプト中でバージョン番号を比較する必要があれば、dpkg --compare-versions ... を使うと良いでしょう。引数について詳しく 知りたければ、dpkg --help -->-- とタイプして下さい。


Debian Packaging Manual - Copyright 996 Ian Jackson.
Contents; abstract; next; back.
version 2.4.1.0, 14 April 1998
Ian Jackson ijackson@xxxxxxxxxxxxxx
Revised: David A. Morris bweaver@debian.org
Maintainer: Christian Schwarz schwarz@debian.org
日本語訳:笹井崇司 sasai@xxxxxxxxxxxxxxxxxx
日本語訳査読: Debian-JP project