[% title = "Debian Packaging Manual - バージョン番号付け" %]
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]
全てのパッケージは、制御ファイルの Version フィールドにバージョン番号を持っています。
dpkg
はバージョン番号に従って順序付けるように
なっています。これによって、dpkg
はパッケージが
アップグレードされるのか、あるいは、ダウングレードされるのかを
知ることができ、さらに、dselect
は利用できる
パッケージがシステムにインストールされているものよりも
新しいかどうかを知ることができます。バージョン番号の形式は (比較に関する限り)
重要なものが前にくる順となっています。
バージョン番号のフォーマットは、 [epoch/:]upstream-version[-/debian-revision] です。
ここには3つの構成要素があります:
これは1桁の符号なし整数です。普通は小さい数に なるはずです。0の場合は省略しても構いません。 省略した時には、upstream-version にコロンを 含んではいけません。
これはパッケージの古いバージョンのバージョン番号の誤りを 許すため、また、パッケージの以前のバージョン番号体系を 残しておくためにあります。
dpkg
は epoch に意味のある文字列が 含まれている場合
(0でない、または upstream-version がコロンを含んでいる場合)
でなければ、通常それを表示しません。dselect
はパッケージ選択表示のメイン部分において、全く epoch を 表示しません。
これがバージョンの主要部分です。適用可能であれば、
これは通常、.deb ファイルが作られるオリジナルの (「上流の」)
パッケージのバージョン番号になります。通常、
これはもともとの上流の作者によって定められたものと
同じ形式になります。しかしながら、dpkg
の形式と比較体系に合わせるために再形式化する必要が あるかも知れません。
upstream-version に関する dpkg
の比較の振る舞いは後で述べます。バージョン番号の upstream-version
部分は必須です。
upstream-version は英数字と文字 . + - : (ピリオド、プラス、 ハイフン、コロン) だけから構成されており、数字で 始まらなくてはいけません。ただし、 debian-revision がなければ、ハイフンは 許されません。また、epoch がなければ、 コロンは許されません。
バージョンのこの部分は、そのパッケージを Debian
バイナリパッケージにするためにほどこした修正の バージョンを表しています。これは
upstream-version と同じ形式であり、 dpkg
は同じやり方で比較を行います。
これはオプションです。debian-revision を持たない形式では、upstream-version に ハイフンを含んではいけません。この形式のものは Debian バイナリパッケージになるように特別に 書かれたソフトウェアであることを示しています。ですから、 そのソフトウェアの 「Debian 化」 はたった一つだけあり、 それゆえ、リビジョンの表示は必要ありません。
upstream-version が増加するたびに、 debian-revision を 1 から 再スタートするのが慣習となっています。
dpkg
は文字列中の最後のハイフンのところで
upstream-version と debian-revision
とに分割しようとします。debian-revision
がないものは、それがあるものより以前のものであると 比較されます (でも
debian-revision は
バージョン番号の最下位部分であることに注意して下さい)。
debian-revision は英数字と文字 + . (プラスとピリオド) だけから構成されます。
upstream-version と debian-revision の部分は、
dpkg
によって同じアルゴリズムを使って比較されます:
文字列は左から右へと比較されます。
最初に、比較対象となる2つの文字列の中で、全て非数字で 構成される最初の部分を決定します。それぞれの文字列に対する、 この部分 (そのうちの一つは空であっても構いません) は辞書順で 比較します。もし違いが見つかれば、それを返します。ここでの 辞書順とは,すべての文字が非文字より先に来る様に修正した ASCII 順です。
次に、2つの文字列の残りのうちで、全て数字で構成される最初の 部分を決定します。この2つの数値を比較し、比較結果として 見つかった違いを返します。こうするために、空文字列 (比較している一方もしくは双方のバージョン文字列の末尾に おいてのみ生じる)は0として数えます。
違いが見つかるか、双方の文字列を調べ尽くすかするまで、 この2つのステップを (先頭から、最初の非数字の文字列と 最初の数字の文字列を切り離しながら) 繰り返します。
epoch の目的はバージョン番号付けのミスをそのままにできるように
するため,またバージョン番号の付け方を変更した場合にそれを
うまく扱えるようにするためだということに注意してください。 dpkg
が解釈することのできない文字 (ALPHA や pre-)
から成る文字列を含む バージョン番号や、思慮の浅い順序付け
(このマニュアルの著者は、1.1, 1.2, 1.3,
1, 2.1, 2.2, 2
などとバージョンが進んでいったパッケージを 聞いたことがあります)
をうまく処理するためでは ありません。
もし上流のパッケージが問題のあるバージョン番号になっている ならば、Version フィールドで使っている健全な形式に 変換すべきです。
もしスクリプト中でバージョン番号を比較する必要があれば、 dpkg --compare-versions ... を使うと良いでしょう。 引数について詳しく知りたければ、dpkg --help とタイプして下さい。
一般的に、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-22ijackson@gnu.ai.mit.edu
bweaver@debian.org
schwarz@debian.org
srivasta@debian.org
J.D.Gilbey@qmw.ac.uk
debian-policy@lists.debian.org
shayase@tky3.3web.ne.jp
debian-doc@debian.or.jp