A.3. CTM を使う

訳: 花井 浩之 、1997 年 9 月 13 日

CTM は、 リモートのディレクトリツリーを中央のツリーに同期させるための手段です。 FreeBSD システムに組み込まれており、FreeBSD のソースリポジトリとの同期に使うことができます。 リポジトリ全体の同期や特定のブランチセットの同期に用いることができます。

CTM は、 特にお粗末な TCP/IP 接続しか持っていなかったり、 TCP/IP 接続が行なえない環境での利用を想定して設計されています。 変更点を自動的にメールで送られてくるように設定することができます。 アクティブなブランチでは 1 日に最大三つまでのデルタを受け取る必要があります。 デルタのサイズは常にできるだけ小さく保たれています。 大抵の場合 5KB よりも小さく、 たまに (10 回に 1 回程度) 10-50KB になり、 ときおり 100KB 以上のサイズになります。

CTM を使って FreeBSD の開発を追いかける時には、 あらかじめパッケージ化されたリリースとは異なり、 開発ソースの作業ディレクトリに関連した注意点に気をつけてください。 これに関しては、 開発ブランチを追いかける の章を参照してください。

デルタを作り出す過程や CTM を他の目的に使うためのドキュメントは現在ほとんどありません。 CTM に関連した質問については、 ctm-users メーリングリストに相談してください。

A.3.1. デルタを入手する

CTM が用いる デルタ は、anonymous FTP もしくはメールで入手できます。

FTP のデルタは以下のミラーサイトから入手できます。 もし anonymous FTP を使って CTM のデルタを手にいれる場合は、 地理的に近くにあるミラーサイトを利用するようにしてください。 何か問題がある場合は、ctm-users メーリングリストに相談してください。

メールでデルタを得たいという場合は、http://lists.freebsd.org/mailman/listinfo から、ctm-src 配布メーリングリストのいずれかに参加してください。 たとえば ctm-src-cur は head 開発ブランチに対応しています。ctm-src-9 は 9.X リリースのブランチに対応したものです

メールで CTM の更新ファイルを受け取り始めたら、 中身を取り出して使用するために ctm_rmail を使ってください。 このプロセスを自動で行ないたいのであれば、 このコマンドを /etc/aliases から直接実行することもできます。 さらに詳しいことは ctm_rmail(1) をご覧ください。

注記:

どの方法を使ってデルタを入手していたとしても、 CTM のユーザは ctm-announce メーリングリストを購読するようにしてください。 このメーリングリストは、 CTM に関するアナウンスが投稿される唯一の場所です。

A.3.2. CTM の使い方

初めて CTM デルタを使う前に、出発点を作成しておく必要があります。

その方法の一つは、空のディレクトリに対して、 スタータ デルタを使う方法です。 スタータデルタは src-cur.3210XEmpty.gz のように、XEmpty というファイル名になります。 X の後ろは最初の開始ポイントに対応し、 Empty は空のディレクトリを表します。 ルールとして Empty からの移行デルタは 100 デルタごとに作られます。 スタータデルタである XEmpty のデルタは、70 から 80MB の gzip で圧縮された大きなデータということに注意してください。

もう一つの方法は、RELEASE のメディアからソースをコピーしたり展開する方法です。 この方法では、 インターネット上で大きなデータの転送を行う必要がありません。

一度ベースとなるデルタを作成したら、 それに続く大きな数字を持つ多数のすべてのデルタを適用してください。 デルタを適用するためには、以下のように実行してください。

# cd /directory/to/store/the/stuff
# ctm -v -v /directory/which/stores/the/deltas/src-xxx.*

一度に適用されるデルタは一つで、 一度適用されたデルタは無視されるので、 複数のデルタを一つのコマンドで適用することができます。 CTMgzip で圧縮されているデルタを理解するので、 ディスクの節約にもなります。

デルタを適用せずに確認だけを行うには、 コマンドラインに -c フラグを加えてください。 CTM はローカルのツリーに対して実際には何も行ないません。 デルタの完全性を確認し、 現在のツリーに問題なく使用できるかを確認します。 オプションに関するより多くの情報や、 デルタを適用する時に CTM が用いるプロセスの全体については、ctm(1) をご覧ください。

ローカルのソースツリーを最新に保つには、 新しいデルタが入手可能になるたびに、 CTM に適用してください。

デルタを適用後、 もしデルタを再ダウンロードするのが骨の折れる作業であれば、 デルタを消さないでおいてください。 このようにすると、将来のディザスタリカバリで必要になった場合に、 ローカルにあるコピーを利用できます。

A.3.3. ローカルの変更を保存する

開発者はソースツリー中のファイルを使って、 実験したり変更したくなるものです。 CTM はローカルの変更を制限つきでサポートします。 ファイルの存在をチェックする前に、同じ名前で .ctm という拡張子のついたファイルを参照しにいきます。 このファイルが存在する場合、CTM はオリジナルファイルの代りにこのファイルを処理します。

この動作はローカルの変更を保持する簡単な手段を提供します。 ファイルを変更する前に、.ctm という拡張子のファイル名にコピーしてください。 あとは自由にオリジナルの名前を持つファイルを変更してください。 CTM は、.ctm の拡張子を持つファイルにのみに適用されます。

A.3.4. CTM のその他のオプション

更新で変更されるファイルを正確に知る

CTM がローカルのソースリポジトリに対して、 どのような変更を行うかを知るには、 -l オプションを使ってください。 このオプションは、変更のログを作成したり、 変更されたファイルに対して、 なんらかの方法で 前・後処理したい場合には、 役に立つでしょう。

更新前にバックアップを取る

CTM の更新によって変更されるファイルすべてのバックアップをとるには、 -B backup-file オプションを指定してください。 このオプションを使うと、 CTM は、 デルタで変更されるファイルすべてを backup-file としてバックアップするようになります。

更新で変更されるファイルを制限する

CTM の更新の範囲を制限したり一連のデルタのから ほんの数ファイルを抽出するには、 使用するファイルを指定する -e と どのファイルを無視するかを指定する -x オプションを使って、正規表現で指定できます。

例えば、lib/libc/Makefile の最新のコピーを保存してある CTM デルタのコレクションから抽出するには、 以下のコマンドを実行してください。

# cd /directory/to/extract/to/
# ctm -e '^lib/libc/Makefile' /directory/which/stores/the/deltas/src-xxx.*

CTM デルタで指定されたファイルごとに、-e そして -x オプションがコマンドラインで指定された順序で適用されます。 すべての-e そして -x オプションが適用された後に更新対象と選択された場合に限り、 CTM はそのファイルを処理します。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。