配布ファイルの更新
目次
Plan9 の配布版の更新の方法はバージョンを重ねるに連れて変化している。
第4版ではベル研のサーバのファイルシステムをマウントし、それをコピーする方法になった。ここではその方法について解説する。
解説は以下の順に行う。
- 利用者登録
- /lib/ndb/local の設定
- replica/pull
- /dist/replica/client/plan9.log
利用者登録
更新を行うにはベル研のサーバ(sources.cs.bell-labs.com)への利用者登録が必要になる。登録はhttp://plan9.bell-labs.com/plan9distに
Create an Update Accountのメニューがあるので、そこから行う。
ユーザ ID とパスワードをメモするのを忘れないこと!
/lib/ndb/local の設定
/lib/ndb/local に以下のタプルを追加するauthdom=outside.plan9.bell-labs.com auth=sources.cs.bell-labs.comこの設定を見て分かる通り、配布サーバ sources.cs.bell-labs.com は認証サーバを兼ねている。(複数の認証サーバを持っており、これは外部者(outside)専用のものであろう)
replica/pull
/dist/replica/network の中のfn servermount { XXX }を
fn servermount { srv tcp!sources.cs.bell-labs.com sources /n/sources bind /n/sources/plan9 /n/dist }に改める。さらに、
/n/sourcesを作成しておく。これでベル研の配布サーバをマウントできる。
term% 9fs sources.cs.bell-labs.com /n/sources post...
!Adding key: dom=outside.plan9.bell-labs.com proto=p9sk1 user[arisawa]: password: ! term%実際、
ls /n/sourcesを実行すると
/n/sources/adm /n/sources/contrib /n/sources/extra /n/sources/plan9が表示される。/n/sources/plan9 以下に配布ファイルが置かれている。
配布ファイルに基づいてシステムを更新するには
disk/kfscmd allow replica/pull /dist/replica/networkを実行する。すると例えば次のようになるであろう。
term% disk/kfscmd allow term% replica/pull /dist/replica/network post... 386/9pc.gz: locally created; will not overwrite 386/bin/ftpfs: locally modified; will not overwrite 386/bin/upas/ratfs: locally modified; will not overwrite ... sys/src/9/pc/usbuhci.c: locally modified; will not update sys/src/9/boot/libboot.a8: locally created; will not updatereplica/pull はユーザが変更したファイルを更新しない。その場合には単に更新しなかったと言う旨のメッセージを出すだけである。それらを更新するには replica/pull に s オプションを付ける。
(一旦は s オプションなしで実行し、その後で更新を必要とするファイルにに対して個別に s オプションを指定するのが良いであろう。)
term% replica/pull -s /dist/replica/network sys/src/9/pc/usbuhci.cマニュアル replica(1) によれば
/bin/replica/pull [-cnsv] name pathとなっておりパスは1個のみと思えるが、/rc/bin/replica/pull を見ると
usage: replica/pull [-csnv] replica-name [paths]と書かれており、パスは複数形になっている。そして実際に複数のパスが許される。
/dist/replica/client/plan9.log
ファイル /dist/replica/client/plan9.log には更新された配布版の記録が載っている。この記録は、クライアントの現在のファイルが配布されたものであるか否かの判断に使用される。(配布時のアクセスモードやオーナー、グループ情報なども含まれる)従って他のコピーツール(cp や cpdir) を使って更新しても、後に replica/pull を実行した時に未配布扱いになる。
注釈: cpdir は筆者によるディレクトリツリーをコピーするツールです。 http://plan9.aichi-u.ac.jp/netlib/ に置かれています。