noble (1) cvsup.1.gz

Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名称

     cvsup — CVS リポジトリ用のネットワーク配布パッケージ

書式

     cvsup [-1aDeEgksvzZ] [-A addr] [-b base] [-c collDir] [-d delLimit] [-h host] [-i pattern] [-l lockfile]
     [-L verbosity] [-p port] [-P m|a|port|lo-hi|-] [-r maxRetries] supfile [destDir]

解説

     CVSup は、ファイル群の配布と更新をネットワーク上で行うための ソフトウェアパッケージです。 CVSup という名前
     はパッケージ全体を指します。 CVSup はクライアントプログラムである cvsup とサーバプログラムである cvsupd か
     らできています。 このマニュアルページは、 CVSup パッケージの概要を説明し、クライアントプログラムである
     cvsup 特有の事項も説明します。 cvsupd の詳しい説明については、 cvsupd(8) をご覧ください。

     rdistsup のような、より伝統的なネットワーク配布パッケージと異なり、 CVSup は特に CVS リポジトリの配布の
     ために作られています。 CVSup は CVS リポジトリとリポジトリに含まれるファイル(特に RCS ファイル)の 特性を生
     かし、伝統的なシステムよりもずっと高速な更新を可能にしています。

オプション

     クライアントプログラム cvsup は、少なくとも一つの引数 supfile を必要とします。 これは、サーバからの転送や更
     新が行われる 1 つ以上のファイルを記述した ファイルです。 supfile は、 sup で使われる同じ目的のファイルに似
     た形式です。 ほとんどの場合、 cvsup は既存の sup supfiles を使えます。

     省略可能な引数 destDir も指定できます。 指定された場合には、この引数は更新された全てのファイルが置かれる
     ディレクトリを指定します。 destDir が指定されると、クライアントの元のファイルはそのまま残されます。 この機
     能は主にテストのためのものです。

     cvsup は以下のオプションをサポートしています:

     -1          一時的な失敗が起き、かつ GUI が使われていない時の自動リトライを無効に します。このオプションを
                 指定しないと、ネットワーク接続の切断といった 一時的な失敗が起きた時、 cvsup はリトライを繰り返
                 し行います。リトライの際には ランダム化された指数的な一時退避(randomized exponential backoff)
                 アルゴリズムを用いてリトライの間隔を確保します。 このオプションは -r 0 と同等であり、GUI を使う
                 時には暗黙的に指定されたことになります。

     -a          クライアントに対して自分自身の認証すること(自分が何であるかを示すこと) をサーバに要求しま
                 す。サーバの認証が失敗すると、更新はキャンセル されます。 後述の 認証 を見てください。

     -A addr     サーバに接続する時に割り当てるローカルのアドレス (ドット区切りの 4 つの数値、またはホスト名)を
                 指定します。このオプショ ンは、ホストが複数個の IP アドレスを持っている場合に便利です。

     -b base     cvsup が管理する記録ファイルを置くベースディレクトリを指定します。 この際には、 supfile による
                 base の指定は全て上書きされます。

     -c collDir  コレクションに関する情報を管理する、 base のサブディレクトリを指定します。 デフォルト値は sup
                 です。

     -d delLimit
                 更新を 1 回実行した際に削除できるファイル数の上限を指定します。 この上限を超えるファイル削除の
                 試みは致命的なエラーとなります。 このオプションを使うと、サーバ上の一時的な設定ミスによる被害
                 を、 ある程度防げます。 デフォルトでは無制限です。

     -D          cvsup にファイルの削除だけを行わせ、どんな種類の更新も行いません。 このオプションは、クライアン
                 トのディスク容量が非常に少ないといった状況 で役に立ちます。ユーザはまず -D オプションを使って
                 cvsup を実行してできる限りの容量を空けます。次にもう一度 cvsup を実行しますが、今度は -D オプ
                 ションは使いません。サーバ上でファイルやディレクトリの名前が変更さ れた場合は、この方法を取るこ
                 とにより、クライアント上で新しいファイルが 生成されるよりも前に、全ての古いファイルが削除される
                 ことが保証されます。 このオプションは、チェックアウトモードではまだ実装されていません。

     -e          サーバから受け取ったシェルコマンドを、 supfile 中の全てのコレクションに execute キーワードが追
                 加されたかのように実行機能を有効にします。

     -E          サーバから受け取ったシェルコマンドを、 supfile 中の全てのコレクションに execute キーワードが追
                 加されたかのように実行する機能を無効にします。

     -g          GUI を使わないようにします。 DISPLAY 環境変数が設定されていなければ、このオプションが暗黙的に指
                 定されます。

     -h host     接続するサーバホストを指定します。 supfile における host の指定は全て上書きされます。

     -i pattern  pattern にマッチするファイルとディレクトリだけを更新対象にするように cvsup に指定します。ディレ
                 クトリがパターンにマッチする場合は、 そのディレクトリをルートとするサブツリー全体が含まれます。
                 このオプションが複数回指定された場合は、パターンは ‘or’ 操作で結合されます。 -i オプションが指
                 定されない場合のデフォルト動作では、各コレクションに含ま れる全てのファイルが更新されます。

                 pattern は標準のファイル名パターンです。 これはコレクションのプレフィックスディレクトリからの相
                 対パスで 解釈されます。 スラッシュ文字は、パターン中に陽にスラッシュが書かれた場合だけ マッチし
                 ます。 ファイル名の先頭にピリオドがあっても、特別扱いはされません。

                 GUI には、パターンを編集できる入力フィールドがあります。

     -k          チェックサムの不一致が起きた時、間違って編集されたファイル全ての一時的 なコピーを保存するように
                 します。 このオプションはデバッグ用のものであり、どうしてファイルが誤って編集さ れたのかを突き
                 止める役に立ちます。 このオプションが指定されているかどうかに関わらず、不正なファイルが ずっと
                 残っているものは、ファイルを丸ごと転送することによって取得した 正しいファイルに置き換えられま
                 す。 このような転送はフィックスアップ(fixup, 修理の意味)と言います。

     -l lockfile
                 lockfile の生成し、更新が行われている間のロックを行います。 lockfile が既にロックされていると、
                 cvsup は自動的なリトライを行うことなく失敗します。 このオプションが役に立つのは、 cron を使って
                 cvsup を定期的に実行する時です。 これは、あるジョブが、ネットワークの問題で予想以上の時間がか
                 かっている 以前のジョブの邪魔をするのを防ぎます。

                 POSIX 形式のファイルロッキングが使われます。これは fcntl(2) で説明されています。 プロセス ID
                 は、ロックファイルが正常に取得できた時に、このファイルに テキスト形式で書き込まれます。 更新の
                 終了時にロックファイルは削除されます。

     -L verbosity
                 GUI でない出力の詳しさを設定します。 レベル 0 では、エラーが起こらない限り cvsup は何も出力しま
                 せん。 レベル 1 (デフォルト値)では、更新されたそれぞれのファイルが出力されます。 レベル 2 で
                 は、それぞれのファイルに対して行われた更新に関するさらに 詳しい情報が出力されます。 メッセージ
                 は全て、標準出力に出力されます。 GUI が使われる場合は、このオプションは無視されます。

     -p port     cvsup が接続を試みるサーバホストの TCP ポートを設定します。 この機能は主にテスト用です。デフォ
                 ルト値は 5999 です。 passive モード( -P オプションの説明を参照)でなければ、サーバはこれより一つ
                 小さい番号の ポートを使って、クライアント向きの 2 つ目の接続を確立します。

     -P m|a|port|lo-hi|-
                 クライアントとサーバ間の情報のやりとりに使う補助的な TCP 接続の確立を 制御します。 全体では、ク
                 ライアントとサーバは通信するために 4 つの片方向のチャネルを 必要とします: 2 つはクライアントか
                 らサーバへの接続で、2 つはサーバから クライアントへの接続です。 色々な防火壁の設定に対応するた
                 めに、これら 4 つの片方向チャネルには色々 な設定ができます。 このために用意されたモード
                 は、multiplexed モード, passive モード、 SOCKS モード、active モードです。 multiplexed モードを
                 除く全てのモードは、古くなっています。 multiplexed モードは、他のモードが扱える全ての状況に対応
                 しています。

                 デフォルトでは、サーバが十分新しければチャネルは multiplexed モードで 確立します。 multiplexed
                 モードは、1 つの TCP 接続を用いて 4 つのチャネルを作ります。 組み込みのパケット多重化層は、TCP
                 接続上にある異なる論理チャネルを 多重化します。これは ssh's のポート転送機能とは異なるやり方で
                 行われます。 これにより、非常に小さい(1% 未満)通信オーバーヘッドとごくわずかの CPU 負荷がかかり
                 ますが、ほとんどどんな防火壁の中でも動作するはずです。 防火壁は、クライアントホストがサーバホス
                 トの 5999 番ポートへ接続を開始 することを許可していなければなりません。 これ以外には、特殊な許
                 可は全く必要ありません。 明示的に multiplexed モードを指定するには、 -P m オプションを使いま
                 す。

                 multiplexed モードは SOCKS プロキシサーバと組み合わせて使えます。 組み合わせて使うには、単に
                 m3socks コマンドの元で cvsup を実行し、 -P m オプションを指定します。

                 active モードは、双方向の TCP 接続を 2 つ使って 4 つの片方向チャネルを 作ります。 クライアント
                 からサーバへの元の接続は 2 つのチャネルを作り、 2 番目の TCP 接続が残りの 2 つのチャネルを作り
                 ます。 2 番目の TCP 接続を確立するために、サーバからクライアントへの接続が行 われます。 -P a
                 で、クライアントはオペレーティングシステムが選んだポート上で 接続を待ちます。 多くのオペレー
                 ティングシステムは、この目的には 1024-5000 の範囲の ポートを使います。 ユーザは -P port を使っ
                 て特定のポートを指定できますし、 -P lo-hi を使ってある範囲のポートも指定できます。 これらのポー
                 ト指定は SOCKS プロキシサーバでは使えません。

                 passive モードは、4 つの片方向チャネルを作るために TCP 接続を使うとい う点では似ています。 しか
                 し、passive モードでは 2 番目の TCP 接続を作るための接続は クライアントからサーバに対して行われ
                 ます。 passive モードは、外向きの接続は許可するけれど内向きの接続は禁止してい る防火壁の中にク
                 ライアントがいる場合に便利です。 passive モードを選択するには、 -P - オプションを使います。
                 passive モードは SOCKS プロキシサーバでは使えません。

                 SOCKS プロキシサーバを使うための別モードです。 SOCKS モードでは、4 つの TCP 接続が使われま
                 す。これらは全て片方向接続 だけです。 4 つの片方向 TCP 接続を使うことにより、SOCKS プロキシサー
                 バの制限を 回避します。これを行わなければ、デッドロックが起こってしまいます。 (信じるかどうかは
                 別にして、SOCKS サーバはブロッキング I/O コールを使い ます。) SOCKS モードは、 cvsupm3socks
                 コマンドの元で実行され、かつ -P オプションが指定されていない時に選択されます。 後述の SOCKS 
                 組み合わせての CVSup の利用 もご覧ください。

     -r maxRetries
                 自動リトライの回数を制限します。自動リトライは、ネットワーク接続が 切れるといった一時的なエラー
                 が起きた時に試みられます。 デフォルトでは、GUI を使っていない時、 cvsup は更新がうまく完了する
                 まで何度でもリトライを行います。 リトライの間隔は、ランダム化された指数的な一時退避アルゴリズム
                 を使って 決められます。 GUI を使うと、暗黙的に -r 0 が指定されます。 -r 0-1 オプションと同
                 じ意味である点に注意してください。

     -s          リストファイルの記録に対しての各クライアントファイルの状態のチェックを 行いません。チェックをし
                 ない代わりに、リストファイルは正確であるものと 仮定します。このオプションはディスクアクセスの量
                 を大幅に減らし、 小さなクライアントホストの負荷で高速に更新を行います。しかし、 このオプション
                 は、クライアントのファイルがローカルで修正されていない場 合に限って使うべきです。ミラーサイト
                 は、このオプションを使うと システムのディスク負荷を減るので利益があるでしょう。安全のために、
                 ミラーサイトであっても時々(一日一度くらい)は -s オプションなしで cvsup を実行すべきです。

                 -s オプションを指定しないと、 cvsup はファイルごとに stat(2) システムコールを実行し、ファイルの
                 属性がリストファイルの記録と一致する かどうかを確認します。これにより、 CVSup 外部でのファイル
                 変更は全て検出・訂正されることが保証されます。

                 -s オプションを指定し、かつローカルでファイルが 1 つ以上変更された時の 結果は未定義です。ローカ
                 ルファイルの損傷が訂正されないまま残ったり、 更新を取りこぼしたり、 cvsup が実行途中で異常終了
                 するかもしれません。

     -v          バージョン番号を表示して終了します。サーバへの接続は行いません。

     -z          全てのコレクションの圧縮を有効にします。この動作は、 supfile において、 compress キーワードを全
                 てのコレクションに追加した時と同様です。

     -Z          全てのコレクションの圧縮を無効にします。この動作は、 supfile において、 compress キーワードを全
                 てのコレクションから削除した時と同様です。

     supfile は、更新すべきファイルのコレクションを指定するテキストファイルです。 コメントは ‘#’ で始まり、その
     行の最後まで続きます。コメントと空白を除くと空である行は 無視されます。残りのそれぞれの行は、サーバ定義の
     ファイルのコレクション で始まります。この行でコレクション名の後に続くのは、0 個以上のキーワード または「
     キーワード=値」の組です。

     デフォルトの設定は、コレクション名が *default である行で指定できます。 このデフォルトは、 supfile 内のそれ
     以降の行に適用されます。 *default 行は複数個あっても構いません。 新しい値は、 supfile で前に指定されたデ
     フォルト値に追加されるか、デフォルト値を上書きします。 コレクションに対して明示的に指定された値は、全てのデ
     フォルト値を 上書きします。

     特によく使われるキーワードを以下に示します:

     release=releaseName
                 これはコレクション内のファイルのリリースを指定します。 コレクション名と同じく、リリース名もサー
                 バの設定ファイル内で定義されて います。普通は各コレクション内に 1 つのリリースしか含まれていま
                 せんが、 何個含んでもかまいません。CVS リポジトリから得たコレクションでは、 慣習的に
                 release=cvs をよく使います。CVS でないコレクションでは、慣習的に release=current を使います。

     base=base   これは cvsup が記録ファイルを置いて管理するディレクトリを指定します。 記録ファイルには、クライ
                 アントマシン上にある各コレクションの状態が 書かれます。 base ディレクトリは既に存在していなけれ
                 ばなりません。 cvsup がこのディレクトリを作成することはありません。 base ディレクトリのデフォル
                 ト値は /usr/local/etc/cvsup です。

     prefix=prefix
                 これは、更新されたファイルが置かれるディレクトリです。 デフォルトでは、これは base と同じです。
                 絶対パスで指定しなければ、 base からの相対パスと解釈されます。 prefix ディレクトリは既に存在し
                 ていなければなりません。 cvsup がこのディレクトリを作成することはありません。

                 特殊な場合として、 prefix が ‘SKIP’ という名の存在しないファイルを指すシンボリックリンクである
                 場合は、 cvsup はそのコレクションをスキップします。 この場合でもコレクションに関係するパラメー
                 タの正しさはチェックされます が、コレクションのファイルは全く更新されません。 この機能を使う
                 と、一つのサイトの複数のマシンで標準の supfile を使いながら、更新するコレクションをマシンごとに
                 制御することができます。

     host=hostname
                 このオプションは、全てのファイルを取り寄せる元となるサーバマシンを 指定します。 cvsup は、1 回
                 の実行における全てのコレクションを同じホストから得ることを 必要とします。 異なる複数のホストか
                 らコレクションを更新したければ、 cvsup を複数回実行しなければなりません。

     delete      このキーワードがあると、 cvsup はファイルの削除を許可します。 このキーワードがなければ、ファイ
                 ルは全く削除されません。

                 delete キーワードがあると、 cvsup はいわゆる exact モードに入ります。exact モードでは、 CVSup
                 はできるだけクライアント側のファイルをサーバ側のファイルに対応させよう とします。 これは、RCS
                 ファイルから個々の差分とシンボリックなタグを消すことと、 ファイル全体を消すことを含みます。
                 exact モードでは、 CVSup は編集されたそれぞれのファイルをチェックサムを使って調べ、編集によって
                 サーバ上にあるマスターコピーと同一のファイルができることを保証します。 あるファイルについて
                 チェックサムのテストが失敗したら、 CVSup は最後の手段としてファイル全体を転送します。

                 一般的には、 CVSup はサーバが知っているファイルだけを削除します。 クライアントのツリーに入って
                 いる追加のファイルは、excact モードであっ てもそのまま残されます。 より正確に述べると、 CVSup
                 が消そうとするファイルは 2 種類です:
                    過去に CVSup 自身が生成または更新したファイル。
                    サーバ上で不要の印が付けられたチェックアウト済みバージョンのファイル。

     use-rel-suffix
                 リリースとタグから作ったサフィックスが cvsup が管理している各ファイルの名前に追加されるようにし
                 ます。 詳しくは リストファイル を参照してください。

     compress    ネットワーク上で送られるデータが全て圧縮されるようにします。 圧縮は非常に有効であり、圧縮しな
                 かった場合に必要な転送量と比べて 普通は 65% から 75% のバイトデータを削減できます。 しかし、ク
                 ラアイントとサーバ両方の CPU 時間という点ではコストがかかり ます。 LAN では、圧縮は一般的に生産
                 性を落とします。実際にはファイルの更新が 遅くなってしまいます。 56K ビット/秒あるいはそれ以下の
                 速度の接続では、圧縮はほぼ確実に 得になります。 これら両極端なケースの中間の速度のネットワーク
                 接続では、実験を 行って参考としましょう。

                 -z コマンドラインオプションは、全てのコレクションに対して compress キーワードを有効にしま
                 す。supfile での指定とは無関係です。 同様に -Z コマンドラインオプションは、全てのコレクションに
                 対して compress オプションを無効にします。

     norcs       RCS ファイルの特別扱いをなくします。RCS ファイルは他のファイルと 同じように扱われます。

     norsync     通常の(RCS でない)ファイルの更新の際に、Tridgell と Mackerras の rsync アルゴリズムを使いませ
                 ん。 このアルゴリズムはどんな種類のファイルでも正しく動作しますが、 圧縮された tar アーカイブの
                 ようなファイルに対しては、 効率的ではありませんし計算的にもコストが高く付きます。

     strictrcs   更新された RCS ファイルをバイト単位の厳密な MD5 チェックサムで 確認します。通常、 CVSup は RCS
                 ファイルに対してもっと緩いチェックサムを用います。これは、 空白文字による無意味な違いを無視しま
                 す。異なるバージョンの CVS と RCS は、同じ RCS ファイルに対しても空白が様々に異なります。 した
                 がって厳密なチェックサムを取ると、論理的には同じであるファイルに対 して意味がない不一致を報告す
                 るかもしれません。これにより不要な “fixups” が大量に行われ、更新が遅くなることがあります。

     nocheckrcs  更新された RCS ファイルに対して、MD5 チェックサムの比較を行いません。 delete キーワードが指定さ
                 れていなければ、このオプションが自動的に 有効になります。

     execute     サーバから受け取ったシェルコマンドを実行できるようにします。 このオプションは注意して使うべきで
                 す。というのも、セキュリティな危険を 及ぼすかもしれないからです。

     preserve    cvsup に、可能な全ての属性をサーバからクライアントに転送しようと試みさせます。 サポートされる属
                 性はホストのプラットフォームとクライアントのプラットフォーム に依存します。FreeBSD システムで
                 は、以下の属性がサポートされています:
                    所有者
                    グループ
                    パーミッション
                    フラグ
                    修正時刻

                 これらのうち、最初の 4 つの属性は preserve キーワードで制御します。5 つ目はどんな場合でも保存さ
                 れます。

                 preserve キーワードは、ユーザファイルや CVS リポジトリの更新に使うためのもので はありません。
                 これは、ホストの全体のファイルツリーを正確に複製するといった特殊な目的 のためだけに使われます。
                 preserve が指定されていると、サーバホストとクライアントホストの何らかの違いが 問題を起こすかも
                 しれません。 例えば、クライアントマシン上に存在しない所有者が所有するファイルを クライアントが
                 受け取った場合、オーナを保存することはできません。 同様にこれによって意図しないパーミッションが
                 設定されることがあります。 さらに、それ以降の更新では、毎回クライアント上のファイルの所有者を訂
                 正 しようとして失敗し、時間と帯域幅を無駄にしてしまうでしょう。 最後になりますが、 preserve
                 モードはネットワークのトラフィックを増大させ、更新を遅くします。

                 preserve モードを正しく機能させるためには、クライアントは root のアクセス権限で 実行しなければ
                 なりません。 クライアントが root でなければ、所有者、グループ、フラグの情報を保存し ようとする
                 機能は無効になります。

                 preserve キーワードは、checkout モードでは無視されます。

     umask=n     コレクション内のファイルを更新する時、 cvsup に umask 値 n (8 進値)を使わせます。 このオプショ
                 ンは、 preserve が指定されていると無視されます。

     いくつかの追加的で、より専門的なキーワードについては後述します。 sup との後方互換性のため、認識できなかった
     キーワードは黙って無視されます。

操作

     cvsup は GUI(グラフィカルユーザインタフェース)を持っており、これを使うとユー ザは更新中の進行状況と処理を監
     視できます。この GUI は、コマンドライン オプション -g が指定されるか、 DISPLAY 環境変数が設定されていなけれ
     ば無効になります。 GUI には、 “Filter” 入力フィールドがあります。ここにパターンを入力して、更新するファイル
     を 制限することができます。 パターンは -i オプションの指定と同様に記述します。 複数のパターンを入力する際に
     は、空白で区切らなければなりません。

     現在のところは、 supfile で指定されたパラメータを GUI で変更することはできません。 この点は将来のリリースで
     の計画になっています。 どちらかというと必要ないものではありますが、GUI は見て楽しいものです。

CVS モード

     CVSup は、2 つの主な動作モードをサポートしています。 これらは CVS モードと checkout モードと呼ばれるもので
     す。

     CVS モードでは、クライアントはマスターの CVS リポジトリを構成している 実際の RCS ファイルのコピーを受信しま
     す。CVS モードはデフォルトの動作 モードです。 このモードは、CVS リポジトリの完全なコピーをクライアントマシ
     ン上でメン テナンスしようとユーザが考えている場合には適しています。

     CVS モードは、CVS リポジトリベースでないファイルのコレクションに対して もうまく使えます。この場合にはファイ
     ルは解釈されることなく、単にそのま ま転送されます。

checkout モード

     checkout モードでは、クライアントは特定のリビジョンのファイルを受信し ます。これはサーバの CVS リポジトリか
     ら直接チェックアウトされます。 checkout モードを使うと、クライアントは任意のバージョンをリポジトリか ら取得
     できます。この際、チェックアウトされる時の形で複数個のバージョン をサーバ上に持つ必要はありません。 しか
     し、checkout モードでは、その基本機能よりもずっと柔軟に動作させる ことができます。 います。 クライアントは
     CVS のシンボリックタグを指定できますし、任意の日付の指 定もできます。両方を指定することもできます。また
     CVSup は、この指定に対応するファイルをリポジトリ内からチェックアウト形式で取 り出すことができます。

     checkout モードはコレクション別に指定します。指定は、 supfile 内に以下のキーワードの一つあるいは両方を含め
     ることによって行います:

     tag=tagname
                 シンボリックタグを指定します。このタグは、CVS リポジトリから取り出すリ ビジョンを選択するために
                 使わなければなりません。 このタグはブランチまたは特定のリビジョンを示すことができます。 タグは
                 シンボリックでなければなりません。つまり、数値のリビジョン番号は サポートされていません。

                 FreeBSD のソースリポジトリの場合は、以下のタグがよく使われます:

                 RELENG_3  ‘stable’ ブランチ。

                 .         メインブランチ( ‘current’ リリース)。 date キーワードだけが指定されると、こちらがデ
                           フォルトです。

     date=[cc]yy.mm.dd.hh.mm.ss
                 これは、CVS リポジトリからチェックアウトするリビジョンの選択に使う日付 を指定します。 クライア
                 ントは実際には、指定された日付と時刻のリビジョンを受け取ります。

                 現時点では、日付のフォーマットは柔軟ではありません。17 文字あるいは 19 文字の全てを、説明した
                 フォーマットで正確に指定しなければなりません。 2000 年以降の場合は、世紀を cc で指定します。 こ
                 れより前の年の場合は、最後の 2 桁だけを yy で指定します。 日付と時刻は GMT で扱います。 デフォ
                 ルトの日付は ‘.’ です。これは “できるだけ新しいもの” という意味です。

     checkout モードを有効にするためには、少なくともこれらのキーワードの いずれかを指定しなければなりません。 ど
     ちらも指定されていなければ、 CVSup はデフォルトの CVS モードで動作します。

     ブランチタグと日付が両方とも指定されると、指定されたブランチ上の 指定された日付の時点のリビジョンがチェック
     アウトされます。 日付を特定のリリースタグに付けて指定することもできますが、あまり役には 立たないでしょう。

     checkout モードでは、タグや日付を更新と更新の間に変えられます。 例えば、 ‘tag=.’ という指定を使ってコレク
     ションが転送されたとしましょう。 ユーザは後から指定を ‘tag=RELENG_3’ に変えられます。 これを指定すると、
     CVSup はチェックアウトされたファイルを編集し、 ‘current’ バージョンが ‘stable’ バージョンになるようにしま
     す。 一般的には、 CVSup はどんなタグ/日付の組合せであっても、他のタグ/日付の組合せに変換してく れます。変換
     は、両者の間にある RCS の差分を既存のファイルに適用するこ とによって行います。

     チェックアウトされたファイルのコレクションを、あるタグから別のタグに 変換するときには、変換の前後で必ず同じ
     リストファイルが使われるようにす るため、 supfile ファイル中で list キーワードを指定することが重要です。 リ
     ストファイルは次の リストファイル の節で説明します。 効率のため、 cvsup は各コレクションについての記録ファ
     イルを管理しています。 これをリストファイルと呼びます。 リストファイルには、クライアントが現在持っている
     ファイルとリビジョンに 関する情報が書かれています。 このファイルには、クライアントのツリーに入っている実際
     のファイルと リストファイルが一致していることを確認するための情報も書かれています。

     厳密に言うとリストファイルは必要ではありません。このファイルが削除され るか、クライアントが持っている実際の
     ファイルとの不一致が起こると、 cvsup は最後の手段として少し効率の悪い方法でクライアント側のファイルの識別と
     更新を行います。 この際には、 CVSup の動作モードによって、タイムスタンプ、チェックサム、RCS ファイルの 解析
     結果などが使われます。

     リストファイルは不可欠ではないので、 cvsup は FTP や CD-ROM から入手した既存のファイルツリーを「利用」でき
     ます。 cvsup はクライアント側のファイルのバージョンを識別し、必要に応じてこれを更新 します。さらに、将来使
     うためにリストファイルを生成します。 他のシステムが作ったファイルツリーを使う場合の動作は、通常の更新ほど
     高速ではありません。 また、サーバにかかる負荷も高くなります。 リストファイルはコレクション固有のディレクト
     リに保存されます。詳しくは ファイル セクションをご覧ください。 リストファイルの名前は必ず ‘checkouts’ で始
     まります。 supfile 内でキーワード use-rel-suffix が指定されていると、リリースとタグから作ったサフィックスが
     ファイル名に 追加されます。 デフォルトのサフィックスは、 supfile で明示的にサフィックスを指定することにより
     上書きされます:

     list=suffix
                 これはリストファイルの名前に付けるサフィックスの指定です。サフィックス の先頭のドットは自動的に
                 付けられます。 例えば、 ‘list=stable’ とすると、 checkouts.stable という名前のリストファイルが
                 作られます。この場合には、リリース、タグ、 use-rel-suffix キーワードは関係ありません。

refuse ファイル

     ユーザは受け取りたくないファイルの集合を指定できます。 こういったファイルは、いわゆる refuse ファイル内で
     ファイル名パターンとして指定されます。 パターンは空白文字で区切られ、各行には複数個のパターンを置くことがで
     きます。 パターンにマッチするファイルとディレクトリは、更新も削除もされません。 これらのファイルは単に無視
     されます。

     現在は、refuse ファイル内にコメントに書く方法はありません。

     パターンは sh(1) のそれと似ていますが、スラッシュの特別扱いや、ピリオドで始まるファイル の特別扱いがない点
     が異なります。 例えば、パターン ‘*.c’ は ‘.c’ で終わる全てのファイルにマッチします。これには
     ‘foo/bar/lam.c’ といったサブディレクトリ内のファイルも含まれます。 全てのパターンはコレクションのプレフィッ
     クスディレクトリからの相対パス として解釈されます。

     これらファイルが CVS リポジトリから得たものならば——普通はそうなのです が——これらは RCS ファイルとなりま
     す。これらのファイルには、 ‘,v’ というサフィックスが付きます。パターンについてはサフィックスも考慮に入 れな
     ければなりません。例えば、FreeBSD の文書ファイルは ‘doc’ という base ディレクトリのサブディレクトリに入って
     います。 そのディレクトリにある ‘Makefile’ が不要な場合に

           doc/Makefile

     と指定してもうまく動作しません。なぜなら、サーバ上にあるファイルは ‘Makefile,v’ だからです。 もっとよい解決
     方法は、

           doc/Makefile*

     と指定することです。この指定であれば、 ‘Makefile’ が RCS ファイルであろうとなかろうとマッチします。

     別の例としては、日本語、ロシア語、中国語の翻訳を避けて FreeBSD 文書 ファイルを取得するには、以下の行を含む
     refuse ファイルを作ります:

           doc/ja*
           doc/ru*
           doc/zh*

     それぞれの supfile 行は、3 つの refuse ファイルによって調べられます。 大域的な refuse ファイルとして
     base/collDir/refuse があります。これは全てのコレクションとリリースに適用されます。 コレクション別の refuse
     ファイルとして base/collDir/collection/refuse があります。これは特定のコレクションに適用されます。 最後
     に、リリースとタグ別の refuse ファイルがあります。これは、 コレクション内の指定されたリリース/タグの組み合
     わせに対してのみ適用さ れます。 最後の refuse ファイルの名前は、コレクション別の refuse ファイルの名 前にサ
     フィックスを加えることによって付けられます。これは先に説明したリ ストファイルと同じ方法です。 どんな種類の
     refuse ファイルも存在しなくてもかまいません。

     cvsup は、 collDir に対する basesup の組み込みのデフォルト値を /usr/local/etc/cvsup に持っています
     が、どちらの値も上書き可能です。 base の値は -b オプションまたは supfile ファイル中の base=pathname エント
     リで変更できます。 (両方指定した場合は、 -b オプションの方が supfile のエントリよりも優先されます。)
     collDir の値は -c オプションでしか変更できません。これを変更する supfile コマンドはありません。

     例えば、 basecollDir の両方にデフォルト値が設定されており、コレクションが ‘src-all’ でリリースが ‘cvs’
     である場合を考えます。 さらに、 ‘tag=RELENG_3’ に対して checkout モードが使われているものとします。 この場
     合、refuse ファイルの名前としては以下の 3 つが考えられます:

           /usr/local/etc/cvsup/sup/refuse
           /usr/local/etc/cvsup/sup/src-all/refuse
           /usr/local/etc/cvsup/sup/src-all/refuse.cvs:RELENG_3

     supfile がコマンド base=/foo を含んでいる場合、refuse ファイルは以下のようになります:

           /foo/sup/refuse
           /foo/sup/src-all/refuse
           /foo/sup/src-all/refuse.cvs:RELENG_3

     -b /bar が使われている場合( supfile ファイル中に base=/foo コマンドがあっても):

           /bar/sup/refuse
           /bar/sup/src-all/refuse
           /bar/sup/src-all/refuse.cvs:RELENG_3

     そして -c stool も使われている場合:

           /bar/stool/refuse
           /bar/stool/src-all/refuse
           /bar/stool/src-all/refuse.cvs:RELENG_3

認証

     CVSup は認証機構を備えており、これを使ってクライアントとサーバがお互いの身元 を確認することができます。この
     機構は、パケット盗聴やリプレイ攻撃の影響 を受けない challenge-response プロトコルを用いています。ネットワー
     ク上 では、パスワードはどちらの向きにも流れません。クライアントとサーバのい ずれも、お互いの身元を独立に確
     認できます。

     ファイル $HOME/.cvsup/auth には認証に使われる情報が書かれています。このファイルには、クライアント がアクセ
     ス可能な各サーバについてのレコードが入っています。それぞれの レコードは、ファイル中に 1 行で書かれます。
     ‘#’ で始まる行は無視されます。空白文字だけの行も同様です。ただし、ファイル 中の他の場所では空白文字も意味を
     持ちます。フィールドは ‘:’ 文字で区切られます。

     ファイルの各レコードは以下の形式です:

           serverName:clientName:password:comment

     たとえ空であっても、全てのフィールドは存在しなければなりません。 ServerName はレコードが適用されるサーバ名
     です。慣習的に、これはカノニカルかつ完全 にドメイン名が指定されたサーバ名です(例: ‘CVSup177.FreeBSD.ORG’
     )。 これはサーバが自分の名前と考えているホスト名でなければなりません。 名前については大文字・小文字は区別さ
     れません。

     ClientName はクライアントがサーバへのアクセス権を得るときに使う名前です。慣習的に、 クライアント名には全て
     e-mail アドレスが使われます(例: ‘BillyJoe@FreeBSD.ORG’ )。クライアント名では大文字・小文字は区別されませ
     ん。

     Password は秘密の文字列であり、クライアントが身元を証明するために使います。 パスワード文字列は ‘:’ や改行文
     字を含んではいけません。

     Comment はレコードを識別するための付加的な情報を持ちます。プログラムに解釈され ることはありません。

     指定されたサーバに対する認証の設定を行うには、以下の手順を実行しなけれ ばなりません:
     1.   サーバ管理者または別の情報源から公式な serverName を取得します。
     2.   適切な clientName を選びます。 これは有効な電子メールアドレスの形式にすべきです。これは、サーバ管理者
          が必要に応じてユーザに連絡しやすくするためです。
     3.   秘密の password として任意の文字列を選びます。
     4.   cvpasswd ユーティリティを実行し、質問に対して パスワード を入力します。このユーティリティはサーバの管
          理者に送る行を出力し、 それからユーザの $HOME/.cvsup/auth ファイルの修正手順を示します。この行をサーバ
          管理者に送るには、安全な 手段を使うべきです。

$HOME/.cvsup/auth にはパスワードが入っているので、必ず自分以外には誰も読めないようにして ください。
ます。 ユーザはサーバの身元をチェックするかどうかを制御します。制御には -a コマンドラインオプションを使います。

ミラーリングのための CVSup の使用

     CVSup は CVS リポジトリ用に最適化されているので、汎用的なミラーリングとして 非常にうまく動作します。 CVSup
     はどんな種類のファイルの更新にも使えます。
        RCS ファイルの更新は、個々のタグと差分の転送および、これらの クライアント側のファイルへのマージによって
         行われます。
        通常ファイルは、可能であれば rsync アルゴリズムを使って更新されます。 rsync アルゴリズムが無効にされて
         いる場合、追加されたデータを持つサーバ 上のファイル(例: ログファイル)は、新しく加わった末尾の部分だけを
         受け取 ります。 他の通常ファイルはまるごと置き換えられます。
        空のディレクトリは残されます。
        シンボリックリンクは、サーバの設定ファイル内で symlinkrsymlink コマンドが指定されていると更新されま
         す。詳しくは cvsupd(8) をご覧ください。
        ハードリンクはそれぞれのコレクション内では保存されますが、コレクション 間では保存されません。
        デバイスノードはメジャー番号とマイナー番号を使って更新されます。 クライアントのホストとサーバのホストで
         異なるオペレーティングシステムが 動作していると、これは望ましい結果とならないことがあります。

CVSup と防火壁

     cvsup は、様々な設定の防火壁を超えるために数多くのモードを用意しています。 これらのモードは -P オプション
     か、 m3socks コマンドを使って制御できます。 cvsup を使えるようにするには、防火壁はサーバホストの 5999 番
     ポートへの外向き の接続を最低限許可しなければなりません。 この条件が満たされていれば、SOCKS の有無に関わら
     ず多重モード (-P m) が動作するはずです。

     もう少し防火壁の制限が緩ければ、passive モードや他のモードの一つを使っ て、効率を少し上げることができます。
     詳しくは -P オプションの説明をご覧ください。

     特定の種類の防火壁と CVSup を組み合わせて使う際の情報については、
     ⟨http://www.polstra.com/projects/freeware/CVSup/⟩ にある CVSup FAQ をご覧ください。

SOCKS と組み合わせての CVSup の利用

     SOCKS プロキシサーバ経由での通信は、現在は FreeBSD 上でしかサポートさ れていません。 これを用いるために
     は、port として用意されている 修正版の Modula-3 の実行時システム( lang/modula-3-lib )とアドオンの SOCKS ラ
     イブラリ( lang/modula-3-socks )が必要です。 また、SOCKS ライブラリは動的リンク技術を使うので、 cvsup の実行
     ファイルは完全に動的リンクされている必要があります。 FreeBSD の port の net/cvsup は、必要に応じて cvsup を
     完全に動的にリンクします。

     SOCKS の動作を有効にするには、単に lang/modula-3-socks パッケージに含まれる m3socks と組み合わせて cvsup を
     実行してください。 詳細については m3socks(1) をご覧ください。

ssh を使ったポート転送

     防火壁の内側のユーザは、SOCKS の代替品として、Secure Shell パッケージの ssh が持っている TCP ポート転送機能
     を使って防火壁を通過できます。 これを行うためには、ユーザは CVSup のサーバホストにログインアカウントが必要
     です。 手順を以下に示します:

     1.   以下のようにして、 ssh を使ってサーバホストとの接続を確立します:

          ssh -f -x -L 5999:localhost:5999 serverhost sleep 60

          普通は serverhost を CVSup サーバのホスト名に置き換えるのですが、ここでは ‘localhost’ を入力します。
          これにより、ポート転送に必要な設定ができます。 60 秒経って sleep が終わるまでに cvsup を起動しなければ
          なりません。 いったん更新が始まると、 ssh は必要な間、転送チャネルをオープンした状態を保ちます。

     2.   ローカルホストで cvsup を実行します。コマンドラインには以下の行を含めます: ‘-h localhost -P m’

ファイル

     /usr/local/etc/cvsup              デフォルトの base ディレクトリ。
     sup                               デフォルトの collDir サブディレクトリ。
     base/collDir/collection/checkouts*
                                       リストファイル。
     base/collDir/refuse               グローバルの refuse ファイル。
     base/collDir/collection/refuse*   コレクション別の refuse ファイルと、リリースとタグ別の refuse ファイル。
     $HOME/.cvsup/auth                 認証用のパスワードファイル。

関連項目

     ctm(1), cvpasswd(1), cvs(1), cvsupd(8), m3socks(1), rcsintro(1), ssh(1)

     http://www.polstra.com/projects/freeware/CVSup/

作者

     John Polstra <jdp@polstra.com>

バグ

     RCS ファイルは ‘,v’ で終わっていなければ RCS ファイルと認識されません。

     ‘Attic’ という名前のディレクトリは CVS Attic として特別扱いされます。

     SOCKS ライブラリまたはサーバのバグのため、大部分の形式の -P オプションは SOCKS では使えません。 多重モード
     (-P m) を使えますが、他の形式の -P オプションは受け付けられません。

     GUI と一部のウィンドウマネージャ(特に FVWM)の相性が良くありません。 FVWM のバージョン 1, 2 のどちらでも問題
     が起こるのですが、バージョン 2 の方がまだましのようです。

           Style "cvsup" ClickToFocus

     という行を FVWM2 の .fvwmrc に追加するとかなりよくなります。 この問題はどうやらウィンドウマネージャのバグが
     原因らしく、GUI が ‘WM_TAKE_FOCUS’ プロトコルを使うと起こるようです。 回避策としては、 -g オプションを使っ
     て、GUI を完全に無効にするとよいでしょう。