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

名称

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

書式

       [-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 パッケージの概要を説明し、クライアントプログラムである
       特有の事項も説明します。 cvsupd の詳しい説明については、 cvsupd(8) をご覧ください。

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

オプション

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

       -p port     が接続を試みるサーバホストの  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 コマンドの元で を実行し、 -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  モードは、 が
                   m3socks コマンドの元で実行され、かつ -P オプションが指定されていない時に選択されます。 後述の
                   “SOCKS と組み合わせての CVSup の利用” もご覧ください。

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

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

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

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

       -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 ディレクトリは既に存在していな
                   ければなりません。 がこのディレクトリを作成することはありません。 base ディレクトリのデフォル
                   ト値は /usr/local/etc/cvsup です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

操作

       は 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 の動作モードによって、タイムスタンプ、チェックサム、RCS ファイルの 解
       析結果などが使われます。

       リストファイルは不可欠ではないので、  は  FTP  や CD-ROM から入手した既存のファイルツリーを「利用」できま
       す。 はクライアント側のファイルのバージョンを識別し、必要に応じてこれを更新  します。さらに、将来使うため
       にリストファイルを生成します。  他のシステムが作ったファイルツリーを使う場合の動作は、通常の更新ほど 高速
       ではありません。 また、サーバにかかる負荷も高くなります。  リストファイルはコレクション固有のディレクトリ
       に保存されます。詳しくは  “ファイル” セクションをご覧ください。 リストファイルの名前は必ず ‘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 ファイルも存在しなくてもかまいません。

       は、 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 と防火壁

       は、様々な設定の防火壁を超えるために数多くのモードを用意しています。 これらのモードは  -P  オプションか、
       m3socks コマンドを使って制御できます。 を使えるようにするには、防火壁はサーバホストの 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  ライブラリは動的リンク技術を使うので、  の実行
       ファイルは完全に動的リンクされている必要があります。 FreeBSD の port の net/cvsup は、必要に応じて を完全
       に動的にリンクします。

       SOCKS の動作を有効にするには、単に lang/modula-3-socks パッケージに含まれる m3socks と組み合わせて を実行
       してください。 詳細については 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 が終わるまでに を起動しなければなり
            ません。 いったん更新が始まると、 ssh は必要な間、転送チャネルをオープンした状態を保ちます。

       2.   ローカルホストで を実行します。コマンドラインには以下の行を含めます: ‘-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 を完全に無効にするとよいでしょう。

FreeBSD                                          August 31, 1999                                        CVSUP(1)