Plan9 の配布版の更新の方法はバージョンを重ねるに連れて変化している。
第4版ではベル研のサーバのファイルシステムをマウントし、それをコピーする方法になった。ここではその方法について解説する。
解説は以下の順に行う。
http://plan9.bell-labs.com/plan9distに
Create an Update Accountのメニューがあるので、そこから行う。
authdom=outside.plan9.bell-labs.com auth=sources.cs.bell-labs.comこの設定を見て分かる通り、配布サーバ sources.cs.bell-labs.com は認証サーバを兼ねている。(複数の認証サーバを持っており、これは外部者(outside)専用のものであろう)
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 オプションを付ける。
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]と書かれており、パスは複数形になっている。そして実際に複数のパスが許される。
注釈: cpdir は筆者によるディレクトリツリーをコピーするツールです。 http://plan9.aichi-u.ac.jp/netlib/ に置かれています。