[% title = "Debian Packaging Manual - バージョン番号付け" %]


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]


Debian Packaging Manual
Chapter 5 - バージョン番号付け


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

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

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

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

epoch

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

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

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

upstream-version

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

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

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

debian-revision

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

これはオプションです。debian-revision を持たない形式では、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つの数値を比較し、比較結果として 見つかった違いを返します。こうするために、空文字列 (比較している一方もしくは双方のバージョン文字列の末尾に おいてのみ生じる)は0として数えます。

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

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

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

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


5.1 日付に基づくバージョン番号

一般的に、Debian パッケージは上流ソースと同じバージョン番号を 使わなくてはいけません。

しかし、上流のバージョン番号が日付に基づくような場合 (例えば、開発 `snapshot' リリースの場合) には、 現在、epoch を使わない限り、dpkg はこれらのような バージョン番号を扱うことができません。例えば、 dpkg は `96May01' を `96Dec24' よりも大きいと判断する でしょう。

そのような場合に、今後のそれぞれの新しい上流バージョンに対して epoch を使わなくて済むようにするためには、バージョン番号を `19960501'、`19961224' といった書式に変更しなくては なりません。上流のメンテナに、上流のバージョン番号も 変更するようにお願いするかどうかはメンテナ次第です。

日付に基づいた、このほかのバージョン番号の書式が dpkg によって 正しく解析されるなら、そのバージョン番号を変更しては いけないことに注意して下さい。

Debian 固有のパッケージ (つまり、Debian 向けに特別に書かれた パッケージ) のバージョン番号に日付を含めるならば、 常に `YYYYMMDD' という書式を使わなくてはいけません。


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]


Debian Packaging Manual

version revision 1.13, 2000-08-22

Ian Jackson ijackson@gnu.ai.mit.edu
校正: David A. Morris bweaver@debian.org
メンテナー: Christian Schwarz schwarz@debian.org
メンテナー: Manoj Srivastava srivasta@debian.org
メンテナー: Julian Gilbey J.D.Gilbey@qmw.ac.uk
メンテナー: The Debian Policy group debian-policy@lists.debian.org
日本語版メンテナー: 早瀬 茂規 shayase@tky3.3web.ne.jp
日本語版校正: Japanese Debian Documentation Project debian-doc@debian.or.jp