[OpenBSD]

Anonymous CVS


目次


Anonymous CVS とは ?

Anonymous CVS は、現時点での OpenBSD ソースに対して加えられた更新に関して、 OpenBSD のソースツリーのあなたのローカルなコピーを最新に維持しておくための 方法です。開発の最先端に追従することに加えて、リリースの errata のための パッチを追跡することもまた可能です。

他のソースコード更新技術に対する Anonymous CVS の主な利点は、中央の ソースコードリポジトリかミラーに対して、それが直接働くということ でしょう。これはつまり、あなたの変更と他のソースの変更に関する更新や マージを制御したり、diff を取ったり、変更履歴や他のことを中央の リポジトリに対して質問したりするために、フルセットの CVS コマンドを あなたは使用できるということです。

OpenBSD プロジェクトは、現状では、次の 5 個の主ソースリポジトリを持っています。

要約しますと、Anonymous CVS を使用することの実際の強みは、それが「寛容な」 ソースコードコントロールシステムであるということであり、それは、あなたが そのまま続けずに解決しなければならない難問のリストを放置するのではなく、 むしろ、あなたのローカルなソースに対してあなたが加えた変更と、あなたの 全体のソースツリーを更新するための「最善の努力」をする ことを尊重するということです。

CVS とは ?

CVS とは、 OpenBSD のソースツリーを管理するのに使用されている ソースコードコントロールシステムです。 それは、すべての正式にリリースされたソースコードとそれに対する 変更のための中央のリポジトリを実装する一方で、開発者に対しては彼らの作業中の変更を 含むソースコードのローカルなコピーを保守することを許しています。 ソースツリーへのアクセスには、次の 2 種類のレベルがあります。

CVS の主な強みは、あなたの行ったあなたのローカルなコピーに対する変更とともに、 中央のリポジトリに対する変更のインテリジェントなマージを実行可能なことでしょう。 これは、もし、あなたがモジュールに対して変更を加えて、更新を実行した場合にも、 あなたの変更が「吹き飛ばされる」ようなことがないことを意味しており、むしろ、 CVS は、中央のソースに対する変更とあなたがあなたのローカルなコピーに対して 加えた変更とをマージするよう、最大限の努力を払おうとします。

変更を完全にマージできなかった場合には、CVS は「柔軟なフォールバック」を提供し、 また、あなたのローカルなコピーに対する注釈された変更を提供し、あなたのバージョンの 変更されていないコピーを保存し、そして、あなたの要求した他のソースモジュールの 更新を継続します。

Anonymous CVS を使い始めるために

AnonCVS サーバからはソースコード全体をダウンロードすることもできますが、 OpenBSD の CD や FTP サーバからダウンロードしたソースファイルをあらかじめ 用意しておくことで、 時間やネットワーク帯域を大幅に短縮することができます。 -release-stable の間に加えられる変更点は比較的少ないので、 これは -stable を運用している場合に 特に有利な方法です。

CD から /usr/src に CVS ツリーをコピーするには、次のようにします (CD は /mnt にマウントされているものと仮定します)。

    # cd /usr/src; tar xzf /mnt/src.tar.gz
    # cd /usr; tar xzf /mnt/XF4.tar.gz
    # tar xzf /mnt/ports.tar.gz
FTP サーバからダウンロードしたソースファイルは、ソースツリーの一部を 入手したいという人の時間を節約できるように、2 個のファイルに分かれています。 この 2 個のファイルとは、カーネルの構築に必要な sys.tar.gz という ファイルと、その他のユーザランドユーティリティが含まれる src.tar.gz です。 特別な理由がなければ、両方をインストールすべきでしょう。 ダウンロードしたファイル src.tar.gzsys.tar.gz が、 /usr に置かれている場合、次のようにします。
    # cd /usr/src
    # tar xzf ../sys.tar.gz
    # tar xzf ../src.tar.gz
    # cd /usr
    # tar xzf XF4.tar.gz
    # tar xzf ports.tar.gz

この 2 個のファイルを必ず展開しなければならない、というわけではありませんが、システム全体は 互いに同期がとれていなければならないため、通常はツリー全体を用意する必要があります。

cvs(1) を使って、ソースリポジトリを"チェックアウト"することも可能です。 具体的な手順については、次のセクションで解説します。

その後、/usr/src は、良きチェックアウトのための領域となり、ここで、すべての cvs(1) コマンドがうまく動くことでしょう。

ソースツリーの取得・更新に CVS を使う

CVS は、ソースを受け取り、それを更新するための単純な方法であることを目指して 設計されたものです。まず最初に、追いかけるのは -current なのか、 パッチブランチ なのかを決める必要があります。 -current ツリーには細かい変更のすべてが含まれており、 パッチブランチは、正式リリースに加え、errata の修正パッチや影響の小さな問題の修正が既に適用されたものとなっています。 このような OpenBSD の"種類"については、 ここをご覧ください。

いったん、追いかけるツリーを決めたら、どの Anonymous CVS サーバを 使うのかを選択しなければなりません。これらのサーバのリストは、 このページの下のほうにあります。

どの Anonymous CVS サーバを使うのかを選択したら、 cvs を使い始めることができます。 CD をお持ちの人は、自分のシステムにソースを取得するために、 上記の方法で CD 上の CVS のチェックアウトで cvs を使い始められます。 もし、CD をお持ちでないなら、ソースをチェックアウトするために次の方法をお使いください。 この方法は、OpenBSD のソースを /usr/src に置くためのものです。

	# cd /usr; cvs checkout -P src

上記の方法は、-current のソースツリーをチェックアウトすることになります。多くの人に とっては、パッチブランチのソースが欲しいことでしょう。このパッチブランチをチェックアウト するためには、次の例のようにコマンドライン上でタグを指定する必要があります。

	# cd /usr; cvs checkout -P -rOPENBSD_3_9 src

これは、3.8 の場合なら、OPENBSD_3_8 となります。

OPENBSD_3_9 のタグは、リリースのソースと適用済の errata を含んでいます。

利用可能な Anonymous CVS サーバ

以下の ssh vs. rsh に関する注を御参照ください   !

注: もし、あなたのサーバが、不正確な情報や知らない情報で ここにリストアップされていた場合、 beck@openbsd.orgに御連絡ください。

あなたは、どのサーバが最も自分に近いところにあるのかを見つけるために、 traceroute(8) を使いたいと思うかも知れません。 サーバに関する問題は、 問題のサーバのメンテナに報告すべきです。

cvs(1) を使っての暗号ソースの取得

重要な注意事項: 誰もが知っておくべきこととして、暗号ソフトウェアに関しては 若干の問題があります。

cvs(1) の使用例

注意: もし、(パッチブランチのような) ブランチを -current に更新したい場合、 -A フラグを cvs に追加することができますが、このフラグは他にはほとんど 使い道がないものです。古目のバージョンのバージョンの OpenBSD のドキュメンテーションでは、 多くの例の中で、このフラグの使用が推奨されていました。我々は最早、絶対に必要でない限りは、 このフラグを推奨していません。

Anonymous CVS サーバの使用法の例は次のとおりです。

$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
    [リポジトリからあなたのマシンへファイルをコピー]
$ cd src/sys/arch/sparc
$ cvs log locore.s
    [選択したファイルのコミットログを表示]
$ cvs diff -bc -r1.1 -r1.5 locore.s
    [リビジョン 1.1 とリビジョン 1.5 との間の変更点を表示]

cvs を ``pserver'' (ssh や rsh を使用する代わりの直接の TCP 接続) で使用する場合には、いったん login しなければなりません。

$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(anoncvs@anoncvs1.ca.openbsd.org への login)
CVS password: anoncvs
    [この行を ~/.cvspass に書く (ファイル名は CVS_PASSFILE がオーバーライドします)。]
    [上記において、'blah' とタイプした後の私の ~/.cvspass 内の行の一例              ]
    [password is:                                                                   ]
    [:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc                           ]
    [一度 login した後は、他のすべての上記の CVSROOT が動くようになるでしょう。     ]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs get ksrc-i386 ksrc-common
    [あなたは、i386 カーネルを再構築するのに必要なものだけ、受け取ることができます。]

Anonymous CVS を使用する人が、普通に自分のソースツリーを更新 するには、

ports使うのも、src と同様です。

上記の例において、cvs の出力を最小化させるために、-q オプションも 指定可能です。画面いっぱいの出力がお好みの向きには、これのオプションは 外しておいた方が幸せでしょう。

また、ローカルにパッチを当てたモジュール (ここでは cd.c) をバグレポートに 含めるために diff を取るには、

	# cd /usr
	# cvs diff -u src/sys/scsi/cd.c > /tmp/patch

(CVS ソースに含まれている) cvs(1) マニュアルページには、 もっと多くの CVS の使い方についての情報があります。

警告: cvs を使用する場合には、カレントディレクトリが、参照しているツリーの root か、 /tmp のような独立した場所かのどちらかになっているよう、注意すべきでしょう。 "get" のようなコマンドの場合、カレントディレクトリの下に、任意のサブツリーを作成 できてしまいますので、これに続く更新は再帰的にこのサブツリーを更新していくでしょう。

Anonymous CVS サービスは、経験の浅い開発者にとって、CVS のオペレーションを 学び、"commit" アクセスを経験するまでの、とても複雑な開発プロセスを経験するための 絶好のチャンスを提供していますが、高品質で有用な技術を見せることの結果として、 彼らはいずれ自然に開発者としてのアクセスを与えられるようになるでしょう。 同様に、パッチを提供する人は、CVS ツリーに関係する自分の "diff" を作成することが できますが、それは、簡単に統合できるものでしょう。

rsh(1) と ssh(1) をどちらを使うか ?

CVS は、サーバ・クライアント間で 3 種類のアクセス方法に対応しています。 注意: rsh を使う人場合は、最初に CVS_RSH 環境変数に rsh(1) プログラムのパス名を設定する必要があります。

OpenBSD の CVS クライアントはデフォルトで、CVS サーバとのやり取りに ssh ("secure shell": OpenSSH) を使用します。

多くの CVS サイトは、最早セキュリティ上の理由から rsh をサポートしていません。 ファイアウォール等のローカルな問題や、slirp のような不完全なプロトコルエミュレータ もまた、rsh の利用の邪魔になるかも知れません。しかし、それでも、もし、rsh を使う必要が ある場合には、CVS_RSH 環境変数に rsh を指定しなければなりません (典型的には /usr/bin/rsh です)。

もし、ローカルなポリシーが ssh のデフォルトポートの 22 番の外との接続を邪魔する場合、 ポート 2022 がその代わりに使用されるかも知れません。しかしながら、それはすべての Anonymous CVS サーバがこのポートでの ssh 接続を受け付けるわけではないことに注意する必要があります。 さらに、セキュリティ上の理由から、最近のバージョンの ssh では、暗号なし が無効化されていますので、ほとんどの Anonymous CVS サーバは最早この接続を受け付けません。 また、CVS では既に圧縮が有効ですので、ssh での圧縮を有効にしようとはしません。

上記に述べた制限や落し穴を避けるために、 $HOME/.ssh/config コンフィグレーションファイルなどを 指定することができます。

	Host anoncvs.ca.openbsd.org
	    Compression no
	    Port 2022

CVS をスタートする際は、少々騒々しいので、少し静かにさせるために、 次のようなことをしたくなるかも知れません。

	$ export CVS_CLIENT_PORT=-1

sup(1) を使った CVS リポジトリのミラーリング

OpenBSD のツリーそのものをミラーしようとするユーザは、 anoncvs.usa.openbsd.organoncvs3.usa.openbsd.org (これらは異なるマシンです) から、そうしようとするかも知れません。しかし、これらは cvs ツリーであり、ソースツリーをチェックアウトしているのではないことに注意 する必要があります。これは、もし、高速な cvs オペレーション (diff、annotate 等) や、 もし、複数のソースツリーを持ち、新しいものを転送したい (そうすれば、ローカルな cvs ミラーからツリーをチェックアウトすることができます) 場合にのみ有用でしかありません。

supfile の例は次のとおりです。

	cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete

これは、/home/sup の中の最後の sup データファイルとともに cvs ツリーを /home/cvs にミラーするでしょう。すべての OpenBSD cvs ツリーは、現状では およそ 2.5GB のサイズになります。もちろん、これは今後も増え続けるでしょう。

anoncvs ミラーの構築

もし、あなたが Anonymous CVS のミラーサイトを構築して、 それを一般公開しようとお考えでしたら、Anonymous CVS のメンテナに御連絡ください。 Anonymous CVS ミラーは約 2.2GB のディスク容量を必要とし、Anonymous CVS ユーザ ひとり当たり 32MB までのスワップを使用する (ユーザが大きなオペレーションを行なった 場合です; 小さなオペレーションの場合は、より少量のリソースですみますが、 それでもなお、 Anonymous CVS は ftp や sup より大きなインパクトがあります)。 そのような Anonymous CVS マシンは、サービスを行おうとする地域に対する優れた ネットワーク接続を持つべきでしょう。Anonymous CVS サーバの構築について記述された ドキュメントが利用可能となっています。

最終的な注意事項

ソースツリーをアップグレードした後、構築しようとする前に、 /usr/src/Makefile の先頭のコメントを読むべきでしょう。 また、もし、可能なら、make build を実行するに 新しいカーネルを構築しておくべきです。場合によっては、カーネルを構築できる ようになる前に、config ユーティリティを再構築し、インストールして おく必要があるかも知れません。もし、config GENERIC が失敗する ようでしたら、たぶん、このケースでしょう。

ソースからの再構築によって、リリースから -current ツリーへのアップグレードは、 しばしば明確ではない依存性のため、どちらかと言えば難しいということに注意して ください。ですので、ソースからツリーを構築しようとする前に、まず、最新の スナップショットをインストールすることを提案しておきます。


OpenBSD www@openbsd.org
$OpenBSD: anoncvs.html,v 1.248 2006/05/02 18:02:36 jufi Exp $