D. J. Bernstein [translated to Japanese by Yusuke Shinyama, 2002-09-06]
UNIX
/package の階層

パッケージのバージョン

システムが、あるパッケージのいろんなバージョンをもっている場合もあります:
     /package/admin/daemontools -> daemontools-0.80
     /package/admin/daemontools-0.76
     /package/admin/daemontools-0.80
     /package/admin/daemontools-0.92
このシステムはadmin/daemontools パッケージの バージョン 0.76, 0.80, 0.92 をもっています。 現在のバージョンは、admin/daemontools シンボリックリンクで 指定されているように 0.80 です。 おそらく 0.76 は古いバージョンで 0.92 は実験的な新バージョンなのでしょう。

ふつう、他のパッケージやユーザは 現在のバージョンに対して /package/admin/daemontools 経由で アクセスします。たとえば /command/tai64nlocal/package/admin/daemontools/command/tai64nlocal への シンボリックリンクになっています。なので、ユーザが tai64nlocal とタイプすると、これは現在のバージョンの tai64nlocal を 走らせることになります。

新しいパッケージをインストールする通常の手段は、 そのパッケージを使うようにシステムをアップグレードすることです。 たとえば バージョン 0.80 から バージョン 0.92 へのアップグレードは、 /package/admin/daemontools シンボリックリンクを daemontools-0.92 を指すように (自動的に) 変更し、 /command 内に daemontools-0.92 のすべてのコマンドが 存在するようにすることです。 これらはすべて /package/admin/daemontools/package/upgrade スクリプトに よって処理されます。

ときたま、ユーザは現在のバージョン以外のバージョンのパッケージに アクセスしたくなるかもしれません。 たとえばユーザが /package/admin/daemontools-0.92/command/tai64nlocal と タイプすると、これは tai64nlocal のバージョン 0.92 を走らせます。 パッケージを作る際には、 システムがそのバージョンにアップデートされる前にも、 システムがそれ以降のバージョンにアップデートされた後にも、 どちらもなるべく正しく動くように設計してください。 たとえばシステム管理者は daemontoolsdaemontools-0.92 にリンクすることなしに /package/admin/daemontools-0.92 を コンパイル、テストおよび使用することができます。

どのバージョンのほうが新しいのか?

バージョン番号は数字で始まる必要がありますが、 特定の番号づけシステムに準拠する必要はありません。 とくに、それらは辞書的な順序で増加する必要はありません。 あるパッケージは 2, 2.01, ..., 2.09, 2.1, 2.11, ..., 2.89, 2.9 などといった バージョンをもつかもしれないし、また別のパッケージは 2.0, 2.1, 2.2, ..., 2.9, 2.10, 2.11 などといったバージョンを もつかもしれないのです。 2.11 は 2.9 よりも前かもしれないし、後かもしれません。

パッケージを作る際には、 ./package/versions ファイルを含めることができます。 これはそれまで使っていたバージョン番号を、 一行にひとつずつ順番に並べたものです。 これによりスクリプトは 2つのバージョンを比較して、どちらがより 新しいかを知ることができます。たとえば、もし /package/admin/daemontools-0.80/package/versions に次のように書いてあって:

     0.75
     0.76
     0.80
対する /package/admin/dameontools-0.92/package/versions に次のように書いてあったとすると:
     0.75
     0.76
     0.80
     0.81
     0.90
     0.91
     0.92
0.92 のほうが新しいということになります。 また、このファイルによって「バージョン 0.81 以上が必要です」というような 依存関係の処理も安全におこなうことができるようになります。