This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

CVSup を使う

A.6. CVSup を使う

訳: 岩崎 満 、1997 年 2 月 27 日

A.6.1. 紹介

CVSup は、 リモートのサーバホストにあるマスタ CVS リポジトリから ソースツリーを配布し更新するための ソフトウェアパッケージです。FreeBSD のソースは、 カリフォルニアにある中心的な開発マシンの CVS リポジトリの 中でメンテナンスしています。CVSup を使用することで、FreeBSD ユーザは 簡単に自分のソースツリーを最新の状態に しておくことができます。

CVSuppull モデルとよばれる更新のモデルを採用しています。pull モデルでは、 各クライアントが更新したい場合に更新したい時点で、 サーバに更新の問い合わせをおこないます。 サーバはクライアントからの 更新の要求を受け身の状態で待ちます。したがって、 すべての更新はクライアント主導でおこなわれます。 サーバは頼まれもしない更新情報を送るようなことはしません。 ユーザは CVSup クライアントを手動で実行して更新をおこなうか、 cron ジョブを設定して定期的に自動実行する必要があります。

用語 CVSup のように大文字で表記しているものは、ソフトウェアパッケージ 全体を指します。主な構成物は、 各ユーザマシンで実行するクライアントである cvsup、FreeBSD の各ミラーサイトで実行するサーバ cvsupd です。

FreeBSD の文書やメーリングリストを読んだ際に、 sup についての言及を 見かけたかもしれません。supCVSup の前に存在していたもので、 同様の目的で使われていました。 CVSup は sup と同じように使用されており、実際、sup と互換性のあるコンフィグレーションファイルを使用します。 CVSup の方がより高速で柔軟性もあるので、もはや sup は FreeBSD プロジェクトでは使用されていません。

A.6.2. インストール

CVSup をインストールする最も簡単な方法は、FreeBSD Ports コレクションのパッケージ からコンパイル済みの net/cvsup パッケージをインストールすることです。 もしくは、 net/cvsup でも構いません。 ただし、 net/cvsup は Modula-3 システムに依存していて、構築にかかる時間、 ディスクスペースは比較的大きくなります。

Note: たとえばサーバのような XFree86 がインストールされていない計算機で CVSup を使おうとしているのであれば、必ず CVSup GUI が含まれていない net/cvsup-without-gui を使ってください。

もし、あなたに CVSup に関してまったく知識がなく、 自動で設定ファイルをセットアップして、 クリックするだけで転送を行なえるインターフェイスを提供してくれるような、 単一のパッケージをインストールしたいと考えているなら、 net/cvsupit パッケージを利用して下さい。 これは pkg_add(1) するだけで良く、 設定は、その際にメニュー形式で行なうことができるようになっています。

A.6.3. CVSup のコンフィグレーション

CVSup の動作は、supfile と呼ばれるコンフィグレーションファイルで制御します。 supfile のサンプルは、ディレクトリ /usr/share/examples/cvsup/ の下にあります。

supfile には以下の cvsup に関する質問への答えを記述します:

次のセクションで、これらの質問に順番に答えながら典型的な supfile を組み立てていきます。最初に supfile の全体構造を説明します。

supfile はテキストファイルです。 コメントは # から行末までです。 空行とコメントだけの行は無視します。

残りの各行には、 ユーザが受け取りたいファイル群について記述します。 行の始めは、 サーバ側で定義した論理的なファイルのグループである "コレクション" の名称です。 コレクションの名称を指定して、欲しいファイル群を サーバに伝えます。コレクション名の後には、 ホワイトスペースで区切られた 0 個以上のフィールドが続きます。 これらのフィールドが上記の質問に対する答えになります。 フィールドには 2 種類あります: flag フィールドと value フィールドです。flag フィールドは deletecompress のような 単独のキーワードから成ります。また、value フィールドもキーワードで始まりますが、 キーワードの後にはホワイトスペースは入らず、 = と二つめの単語が続きます。例えば、 release=cvs は value フィールドです。

通常、supfile には受け取りたいコレクションを一つ以上指定します。 supfile を組み立てる一つの方法として、 コレクション毎にすべての関係の あるフィールドを明示的に指定する方法があります。しかし、 これでは supfile のすべてのコレクションに対して ほとんどのフィールドが同じになるため、 行が非常に長くなってしまい不便になります。 これらの問題を避けるため、CVSup ではデフォルトを指定することのできる メカニズムが提供されています。特殊な擬似コレクション名 *default で始まる行は、 supfile 中の後続の コレクションに対して使用する flag フィールドと value フィールドのデフォルトを設定するために利用できます。 個々のコレクションで固有の値を指定すると、 デフォルト値を無効にできます。また *default 行を追加すると、supfile の途中からデフォルト値の変更や追加が可能になります。

これまでの予備知識を基に、 FreeBSD-current のメインのソースツリーを受け取って更新するための supfile を組み立ててみましょう。

A.6.3.1. 拒否ファイル (refuse file)

既に述べたように、CVSup取り寄せ法 (pull method)を用いるのですが、 これは基本的に次のようなことを意味します。 まずあなたが CVSup サーバに接続します。 するとサーバは "あなたがダウンロードできるのはこれこれです" と言います。 それに対し、あなたが使っているクライアントは "わかりました。 では、これとこれとこれをもらいます" と答えます。 デフォルトの設定の CVSup クライアントは、 設定ファイルで選んだコレクションとタグに適合する すべてのファイルを取得します。 しかし、これは常にあなたの望む動作と一致するとは限りません。 特に doc や ports や www のツリーを同期させる場合などはそうでしょう。 ほとんどの人は四か国語も五か国語も操れるわけではありませんから、 特定の言語のファイルのダウンロードは必要ないでしょう。 Ports コレクションを CVSup で取得する場合には、各コレクションを個別に指定することができます (たとえば、単に ports-all とするかわりに ports-astrologyports-biology などと書きます)。 一方、doc と www のツリーは言語別のコレクションになっていません。 そこであなたは CVSup のたくさんある洗練された機能の一つ、 拒否ファイル (refuse file) 機能を使う必要があります。

拒否ファイル (refuse file)CVSup に対し、 コレクションに含まれる一部のファイルを取得することを伝えます。 言い換えれば、それはクライアントに対し、 サーバから来る一部のファイルを拒否するよう指定するということです。 拒否ファイルは base/sup/refuse にあります (もしファイルがない場合には作成してください)。 base は supfile 内で定義されています。 デフォルトでは /usr/local/etc/cvsup です。つまり、 拒否ファイルのデフォルトは /usr/local/etc/cvsup/sup/refuse ということになります。

拒否ファイルの書式は、単にダウンロードしたくないファイルや ディレクトリの名前が書いてあるだけの非常にシンプルなものです。 たとえば、英語以外にはドイツ語を少し話せるだけの人で、 ドイツ語のアプリケーション (やその他英語以外の言語のためのアプリケーション) を必要と感じなければ 以下のような拒否ファイルが考えられます。

    ports/chinese
    ports/french
    ports/german
    ports/hebrew
    ports/japanese
    ports/korean
    ports/russian
    ports/ukrainian
    ports/vietnamese
    doc/de_DE.ISO8859-1
    doc/el_GR.ISO8859-7
    doc/es_ES.ISO8859-1
    doc/fr_FR.ISO8859-1
    doc/it_IT.ISO8859-15
    doc/ja_JP.eucJP
    doc/nl_NL.ISO8859-1
    doc/pt_BR.ISO8859-1
    doc/ru_RU.KOI8-R
    doc/sr_YU.ISO8859-2
    doc/zh_TW.Big5

他の言語についても同様です (全リストは FreeBSD FTP サーバ をご覧になってください)。 拒否ファイルの中ではリポジトリの名前が "ディレクトリ" の先頭部分に対応することに注意してください。

この実に便利な機能を使うと まったく必要としないファイルをダウンロードする必要がなくなり、 インターネット接続の回線が遅かったり従量制で課金されている人は 貴重な時間を節約できるようになります。 拒否ファイルの詳細や CVSup が持つその他の便利な機能に関しては マニュアルページを参照してください。

A.6.4. CVSup の実行

さて、更新の準備ができました。 これを実行するコマンドラインは実に簡単です:

    # cvsup supfile

もちろん、ここでの supfile は作成したばかりの supfile のファイル名です。X11 環境で実行するものと仮定して、cvsup は 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します。 "go" ボタンを押して、 実行を監視してください。

この例では実際の /usr/src ツリーを更新しているので、cvsup にファイルを更新するのに必要なパーミッションを与えるために、 ユーザ root で実行する必要があります。 コンフィグレーションファイルを作ったばかりで、 しかも以前にこのプログラムを実行したことがないので、 神経質になるのは無理もない話だと思います。 大切なファイルに触らずに試しに実行する簡単な方法があります。 どこか適当な場所に空のディレクトリを作成して、 コマンドラインの引数で指定するだけです:

    # mkdir /var/tmp/dest
    # cvsup supfile /var/tmp/dest

指定したディレクトリは、すべての更新されるファイルの 更新先ディレクトリとして使用します。 CVSup/usr/src の下のファイルを検査しますが、 変更や削除はまったくおこないません。かわりに /var/tmp/dest/usr/src に更新されたすべてのファイルが置かれるようになります。 この方法で実行した場合は、CVSup は base ディレクトリの status ファイルを更新せずにそのままにします。 これらのファイルの新しいバージョンは指定されたディレクトリ に書き込まれます。/usr/src の読み取り許可がある限り、このような試し実行のためにユーザ root になる必要はありません。

X11 を利用していないとか単に GUI が気に入らない場合は、 cvsup 起動時にコマンドラインに 二つほどオプションを追加する必要があります:

    # cvsup -g -L 2 supfile

-g オプションは CVSup に GUI を使用しないように伝えます。X11 を利用していない場合には自動的に指定されますが、 そうでない場合は明示的に指定します。

-L 2 オプションは cvsup にファイル更新中の詳細情報をプリントアウト するように伝えます。冗長性には -L 0 から -L 2 までの三つのレベルがあります。 デフォルトは 0 であり、エラーメッセージ以外はまったく出力 しません。

たくさんの他のオプション変数があります。 それらの簡単な一覧は cvsup -H で表示されます。 より詳しい説明はマニュアルページをご覧ください。

動作している更新の方法に満足したら、cron(8) を使って CVSup を定期的に 実行させる準備をすることができます。cron から起動する際には、 明示的に CVSup が GUI を使わないようにする必要があります。

A.6.5. CVSup ファイルコレクション

CVSup 経由で入手できるファイルコレクションは 階層的に組織化されています。 いくつか大きなコレクションがあり、 それらは小さなサブコレクションに 分割されています。 大きなコレクションは、そのサブコレクション毎に 受信することと同じことになります。 下の一覧ではコレクション間の階層関係を 字下げして表現します。

最も一般的に使用するコレクションは src-allports-all です。 他のコレクションは特別な目的を持つ人達だけが使用しており、 ミラーサイトはそれらのすべてを 持っていないかもしれません。

cvs-all release=cvs

メインの FreeBSD CVS リポジトリであり、 暗号のコードを含んでいます。

distrib release=cvs

FreeBSD の配布とミラーに関連するファイルです。

doc-all release=cvs

FreeBSD ハンドブックおよびその他のドキュメントのソースです。 これには FreeBSD web サイトのファイルは含まれません。

ports-all release=cvs

FreeBSD の Ports コレクションです。

ports-archivers release=cvs

アーカイビングのツール。

ports-astro release=cvs

天文学関連の ports。

ports-audio release=cvs

サウンドサポート。

ports-base release=cvs

/usr/ports のトップにあるその他のファイル。

ports-benchmarks release=cvs

ベンチマークプログラム。

ports-biology release=cvs

植物学関連のプログラム。

ports-cad release=cvs

CAD ツール。

ports-chinese release=cvs

中国語サポート。

ports-comms release=cvs

通信ソフトウェア。

ports-converters release=cvs

文字コードコンバータ。

ports-databases release=cvs

データベース。

ports-deskutils release=cvs

コンピュータが発明される前に 卓上で使われていたものたち。

ports-devel release=cvs

開発ユーティリティ。

ports-editors release=cvs

エディタ。

ports-emulators release=cvs

他の OS のエミュレータ。

ports-ftp release=cvs

FTP クライアントとサーバ。

ports-games release=cvs

ゲーム。

ports-german release=cvs

ドイツ語サポート。

ports-graphics release=cvs

グラフィックユーティリティ。

ports-irc release=cvs

インターネットリレーチャット (IRC) 用のユーティリティ。

ports-japanese release=cvs

日本語サポート。

ports-java release=cvs

Java ユーティリティ。

ports-korean release=cvs

韓国語サポート。

ports-lang release=cvs

プログラミング言語。

ports-mail release=cvs

メールソフトウェア。

ports-math release=cvs

数値計算ソフトウェア。

ports-mbone release=cvs

MBone アプリケーション。

ports-misc release=cvs

色々なユーティリティ。

ports-net release=cvs

ネットワーキングソフトウェア。

ports-news release=cvs

USENET ニュースのソフトウェア。

ports-palm release=cvs

3Com Palm™ シリーズ用ソフトウェア。

ports-print release=cvs

印刷ソフトウェア。

ports-russian release=cvs

ロシア語サポート。

ports-security release=cvs

セキュリティユーティリティ。

ports-shells release=cvs

コマンドラインシェル。

ports-sysutils release=cvs

システムユーティリティ。

ports-textproc release=cvs

文書処理ユーティリティ (デスクトップパブリッシングは含まない)。

ports-vietnamese release=cvs

ベトナム語サポート。

ports-www release=cvs

World Wide Web 関連のソフトウェア。

ports-x11 release=cvs

X window システムをサポートする ports。

ports-x11-clocks release=cvs

X11 上で動作する時計の数々。

ports-x11-fm release=cvs

X11 上で動作するファイラ。

ports-x11-fonts release=cvs

X11 のフォントとフォントユーティリティ。

ports-x11-toolkits release=cvs

X11 のツールキット。

ports-x11-servers

各種 X11 サーバ。

ports-x11-wm release=cvs

X11 のウィンドウマネージャ。

src-all release=cvs

メインの FreeBSD ソース群であり、 暗号のコードを含んでいます。

src-base release=cvs

/usr/src のトップにあるその他のファイル。

src-bin release=cvs

シングルユーザモードで必要な ユーザユーティリティ (/usr/src/bin)。

src-contrib release=cvs

FreeBSD プロジェクト外部からの ユーティリティおよびライブラリ、 比較的無修正 (/usr/src/contrib)。

src-crypto release=cvs

FreeBSD プロジェクトの外部で開発された暗号ユーティリティとライブラリで、 ほとんどそのままの形で使われます (/usr/src/crypto)。

src-eBones release=cvs

Kerberos と DES (/usr/src/eBones) のこと。 現在の FreeBSD リリースでは使われていません。

src-etc release=cvs

システムコンフィグレーションファイル (/usr/src/etc)。

src-games release=cvs

ゲーム (/usr/src/games)。

src-gnu release=cvs

GNU Public License 下にあるユーティリティ (/usr/src/gnu)。

src-include release=cvs

ヘッダファイル (/usr/src/include)。

src-kerberos5 release=cvs

Kerberos5 セキュリティパッケージ (/usr/src/kerberos5)。

src-kerberosIV release=cvs

KerberosIV セキュリティパッケージ (/usr/src/kerberosIV)。

src-lib release=cvs

ライブラリ (/usr/src/lib)。

src-libexec release=cvs

システムプログラムであり、 通常は他のプログラムから実行される (/usr/src/libexec)。

src-release release=cvs

FreeBSD の release を構築するために必要なファイル (/usr/src/release)。

src-sbin release=cvs

シングルユーザモード用の システムユーティリティ (/usr/src/sbin)。

src-secure release=cvs

暗号化ライブラリとコマンド (/usr/src/secure)。

src-share release=cvs

多様なシステム間で共有可能なファイル (/usr/src/share)。

src-sys release=cvs

カーネル (/usr/src/sys)。

src-sys-crypto release=cvs

カーネル用の暗号コード (/usr/src/sys/crypto)。

src-tools release=cvs

FreeBSD の保守用の色々なツール (/usr/src/tools)。

src-usrbin release=cvs

ユーザユーティリティ (/usr/src/usr.bin)。

src-usrsbin release=cvs

システムユーティリティ (/usr/src/usr.sbin)。

www release=cvs

FreeBSD WWW サイトのソースです。

distrib release=self

CVSup サーバ自身のコンフィグレーションファイルです。CVSup ミラーサイトが使用します。

gnats release=current

GNATS バグトラッキングデータベースです。

mail-archive release=current

FreeBSD 関連メーリングリストのアーカイブ。

www release=current

前処理された FreeBSD www サイトのファイルです (ソースではありません)。 WWW ミラーサイトが使用します。

A.6.6. 詳細について

CVSup の FAQ や CVSup に関するその他の情報については The CVSup Home Page をご覧ください。

CVSup のほとんどの FreeBSD 関連の議論は FreeBSD の技術的議論に関するメーリングリスト でおこなわれています。 ソフトウェアの新しいバージョンは FreeBSD announce メーリングリスト で アナウンスされます。

質問とバグ報告はプログラムの作者、 へ 送ってください。

A.6.7. CVSup サイト

FreeBSD の CVSup サーバは以下のサイトで稼働しています:

アルゼンチン
オーストラリア
オーストリア
ブラジル
カナダ
中国
チェコ
デンマーク
エストニア
フィンランド
フランス
ドイツ
ギリシャ
アイスランド
アイルランド
日本
韓国
ラトビア
リトアニア
ニュージーランド
オランダ
ノルウェー
ポーランド
ポルトガル
ルーマニア
ロシア
サンマリノ
スロヴァキア共和国
  • cvsup.sk.FreeBSD.org (保守担当 )

  • cvsup2.sk.FreeBSD.org (保守担当 )

スロベニア
南アフリカ
スペイン
スウェーデン
台湾
ウクライナ
イギリス
アメリカ