FreeBSD を最新に保つ - CVSup

cvsup を利用して,FreeBSD 本体及び ports を最新に保ちます.

CVSupを行う利点

FreeBSD は,本体及び ports 等のソースコードやドキュメントは cvs で管理されています.そのマスタ cvs からソースファイル等を取得する為に CVSup は存在しています.CVSup を利用することで,手元の FreeBSD 環境のソースツリーを最新に保つ事が可能になります.
CVSup を利用して得られる利点は次の通りです.

  • 最新の FreeBSD のソースファイルを取得して make world する事で,自身の環境を最新に保てます
  • ports/packages で管理しているソフトウェアを最新に追従出来ます

CVSup は pull モデルと呼ばれる更新モデルを採用しており,各クライアントが更新したいと思ったタイミングでサーバに更新の問い合わせを行います.サーバはクライアントからの更新要求を待ち受けており,更新作業はクライアントが主導権を持って行われます.
通常,私たちが利用するのは cvsup というクライアントプログラムで,このプログラムを利用してリモートのサーバからソースファイルの更新版を取得します.

また,CVSup を行なうプログラムとして,cvsup 及び csup の2つがあります.cvsup は今ままでメインで使用されてきたプログラムで,csup は最近出てきたプログラムです.csup は FreeBSD-6-STABLE からメインソースツリーに入りましたので,FreeBSD 6.2-RELEASE からは初期インストールの状態から利用が可能になる予定です.

インストール

cvsup または csup のインストールを行ないます.インストールは ports 又は package からインストールを行なう事が出来ますが,ここでは ports でのインストール方法を扱います.

CVSup のインストール

このドキュメントで説明する cvsup はクライアントプログラムです.サーバプログラムは cvsupd と呼ばれる物で,今回の対象ではありません.

インストールの前に,cvsup プログラムは2種類あり,X Window 上で GUI での操作が可能なプログラムと,コマンドライン上で動作するプログラムです.
前者は /usr/ports/net/cvsup からインストールを行い,後者は /usr/ports/net/cvsup-without-gui からインストールを行います.
今回は,コマンドライン版の cvsup をインストールします.以下の様にタイプする事でインストールが完了します.

cd /usr/ports/net/cvsup-without-gui
make install

cvsup は Modula-3 という言語で書かれており,ezm3 に依存します.その為,cvsup 及び ezm3 が依存するソフトウェアとして以下のソフトウェアも一緒にインストールされます.

  • gmake
  • gettext
  • libtool15
  • libiconv

csup のインストール

csup は,RELENG_6 から標準でインストールされている,cvsup の後継版と言え,C言語で書かれており,依存プログラムも無い為に今後メインで使用されるだろうプログラムです.
RELENG_6 を使用していない場合,ports からインストールを行なう事で csup を利用できます.インストールは以下の様にタイプする事でインストール出来ます.

cd /usr/ports/net/csup
make install

自分の ports ツリーに,csup がない場合,FreeBSD のミラーサイトより ports.tar.gz を取得,/usr 以下に展開するか,一旦 cvsup をインストールして ports ツリーを更新してから置き換えて下さい.

CVSup を行うための設定ファイルを用意する

cvsup を実行するためには,以下の要件を満たす必要があり,それら要件を設定ファイルに反映させます.

  • どのファイルを受け取りたいのか?
  • どのバージョンのものが欲しいのか?
  • どこから入手したいのか?
  • 自分のマシンのどこに置きたいのか?
  • status ファイルをどこに置きたいのか?

どのファイルを受け取りたいのか?

cvsup を通じて入手可能なファイルは コレクション と呼ばれる名前のグループに纏められてあります.代表的なコレクションには以下の様なものが存在します.

受け取るものコレクション名
FreeBSD のメインソースツリーsrc-all
FreeBSD で使用される暗号ユーティリティsrc-crypt
ports コレクションports-all
ports のネットワーキングソフトウェアports-net

どのバージョンのものが欲しいのか?

cvsup では,cvs で管理されているファイルの全てのバージョンのソースファイルを取得する事が可能です.その為,バージョンを明確にしないと,どのバージョンのファイルを渡せばよいのかサーバ側で判断が出来なくなってしまいます.
バージョンの指定には,tag= 及び date= のフィールドを使用して指定する事が可能です.通常の場合は tag= フィールドのみを利用するのが一般的でしょう.
tag= フィールドで指定する場合,次のような感じで指定します.
ports システムで指定可能な tag は tag=. のみになる事に注意して下さい.

FreeBSD-currenttag=.
FreeBSD-6.1-RELEASEtag=RELENG_6_1_RELEASE
FreeBSD-6.1-STABLEtag=RELENG_6_1
FreeBSD-6-STABLEtag=RELENG_6
portstag=.

どこから入手したいのか?

cvsup で取得したいファイル郡を,どのサーバから入手するかを host= フィールドに定義します.
CVSup の配布サイトであればどれを指定しても構いませんが,ネットワーク的に近いサーバ及び,負荷の軽いサーバを指定する方が良いでしょう.
日本にある CVSup サーバの負荷状況は http://home.jp.freebsd.org/stats/mrtg/cvsup/ から確認する事が可能ですので,参考にして下さい.

自分のマシンのどこに置きたいのか?

取得したファイルを,自分のマシンのどこのディレクトリに置きたいのかを prefix= フィールドに定義します.
ports を CVSup で更新する際,prefix=/usr/ports とした場合は,インストール時点の RELEASE からのアップデートとなります.prefix=/home/user/ports 等と指定した場合は,指定されたディレクトリに ports のソースファイル等が保存されます.

どこに status ファイルを置きたいのか?

CVSup クライアントは base= フィールドで指定した場所に status ファイルを保存します.この status ファイルを利用する事によって,既に受け取ったファイルや,更新情報を追従する事で効率の良いファイルの更新が可能になります.

その他の supfile の設定

通常,supfile に入れておくべきだろう行があります.それは以下の1行です.

release=cvs delete use-rel-suffix compress

release=cvs はメインの CVS リポジトリから情報を取得するように指示しています.delete は cvsup がファイルを削除する事を許可します.最新の状態に追従する場合は必ず指定しましょう.use-rel-suffix は何も考えずに指定して下さい.自分もよく判っていません.compress はファイルの取得中に gzip 形式の圧縮を行いファイル取得を行ないます.低速な回線では有効ですが,高速な回線では逆に遅くなるので,compress は取り払ってしまいましょう.また,compress オプションを付ける事によって,リモートの CVSup サーバの CPU 負荷が上がってしまいますので,自分のコンピュータの回線速度,CPU 状態等を考えて指定して下さい.

設定ファイルのまとめ

上記設定ルールを元に決定していくと,次のようなファイルが出来上がるかと思います.

ports を最新に保つ設定ファイル~

*default tag=.
*default host=cvsup.jp.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix

ports-all

FreeBSD を 6-STABLE に保つ設定ファイル~

*default tag=.
*default host=cvsup.jp.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix

src-all

雛形ファイル

実は,/usr/share/example/cvsup に CVSup 用の雛形ファイルがあります.このファイルを適当なディレクトリにコピーし,変更しようと思う箇所 host=tag= 等を変更するだけで,CVSup 用のファイルが完成しますので,こちらを利用する方が間違いが無いかと思います.

CVSup の実行

cvsup|csup を実行する場合は単純に,cvsup|csup プログラムに設定ファイルを引数として与えて実行するだけです.

cvsup <config-file>

または

csup <config-file>

ファイルの内容に沿って,ソースファイル等の更新が行なわれます.


Hiroyuki Seino http://www.seichan.org/ http://www.seichan.org/blog/
Today:1 Yesterday:4 All:30063