スポンサーリンク

CTM(1) FreeBSD 一般コマンドマニュアル CTM(1)

名称

ctm − ソースコードをミラーするプログラム

書式

ctm [−cFklquv] [−b basedir] [−B backup-file] [−e include-regex] [−t tar-command] [−T tmpdir] [−V level] [−x exclude-regex] file ...

解説

ctm ユーティリティは、元々 ‘‘Cvs Through eMail’’ でしたが、今は代わりに ‘‘Current Through eMail’’ と呼ぶのがふさわしいようです。

ctm ユーティリティは、今や 2 つのバージョンのディレクトリツリーの間でデル タを作成して適用するための最も信頼できる方法を意味します。

これにはデルタの作成と適用という 2 つの部分があります。2 つは全く異なるも のです。

使用例

CTM デルタを適用するには、それを ctm コマンドに渡します。CTM デルタを標準 入力、またはファイル名を引数として渡すことができます。後者の方法を取る と、とても簡単にすることができます。なぜなら このプログラムは gzip で圧縮 されたファイルを受け付けて、ファイルの一時的なコピーを作る必要が無いから です。複数のデルタを一度に指定でき、それらは一度にひとつずつ処理されま す。すでに適用されているデルタは無視されます。

ctm コマンドの実行はたくさんのパスにわかれています。次のパスを始める前 に、それぞれのパスで入力ファイルの全体が処理されます。

name で指定されたファイルを処理する前に ctm は まず name.ctm というファイ ルが存在するかどうかをチェックします。存在すれば、 ctm は、かわりにそちら を処理します。

パス 1 では、入力ファイルが正常かどうかを確認します。文法、データ、全体の MD5 によるチェックサムがチェックされます。いずれか 1 つでも異常があれば、 ctm は単純に入力ファイルを拒否します。

パス 2 ではディレクトリツリーが CTM デルタの期待している状態になっている かどうかを確認します。これは存在する/しないはずのファイルとディレクトリを 捜してファイルの MD5 によるチェックサムをチェックすることで行われます。

もし backup-file−B オプションで指定されていると、その ctm の呼び出し で変更されるファイルが −t オプションで指定されたアーカイバコマンドを使っ て、そのファイルにバックアップされます。デフォルトのアーカイバコマンドは tar -rf %s -T - です。

パス 3 では実際にデルタが適用されます。

ctm によって変更されるファイルのリストは、 −e−x オプションで指定され た正規表現によるフィルタの対象になります。 −e−x オプションは、コマン ドラインで指定された順に適用されます。与えられたファイル名に最後にマッチ したフィルタが、そのファイルを ctm の適用対象とするかどうかを決定します。

ctm ユーティリティは、その作業ディレクトリ下にファイルの階層を展開しま す。絶対パスや ‘.’ と ‘..’ の参照を含むファイル名は、セキュリティのために 明確に禁止されています。

オプション

       −b basedir

各ファイル名に basedir で指定されたパスを前置します。

−B backup-file
この CTM の実行で変更されるすべてのファイルを backup-file にバッ クアップします。 −e−x オプションで何らかのフィルタが指定され ると、 CTM の実行時にフィルタが適用され、変更されたファイルが、最 終的にバックアップされるファイルのセットとなります。

−c
確認だけを行ない、他には何もしません。

−e regular_expression
CTM ファイル中の各ファイル名が regular_expression にマッチするか どうかを調べ、マッチすればそのファイルを処理し、マッチしなければ 何もせずそのまま残します。このオプションは何個でも指定できます。 このオプションを指定すると .ctm_status のシーケンス番号のチェック が行なわれません。例えば、 ^usr.sbin/ctm と指定すると、 usr.sbin/ctm というソースディレクトリと、その下のすべてのパス名を 指定した事になります。

CTM の処理対象からパス名を外すには −x オプションを使います。

−F
強行します。

−k
ファイルとディレクトリを保存し、CTM ファイルで削除するように指定 されているものでも削除しません。 −B オプションが指定されると、そ のファイルとディレクトリはバックアップされません。

−l
その CTM の実行で変更されるはずのファイルと、それに対して行われる アクションをリストします。 −l オプションを使うと .ctm_status の チェックと作業対象のソースツリーの正当性チェックが行なわれませ ん。 −l オプションは、 −e−x オプションを組み合わせることで、 与えるコマンドラインオプションでどのファイルが変更されるかを見定 めることができます。

−q
表示を減らします。

−t tar-command
デフォルトのアーカイバである tar の代わりに tar-command を使いま す。このオプションは、バックアップファイルが −B オプションで指定 された場合にのみ効果があります。 tar command 中には一つだけ %s を 置くことができ、バックアップファイルの名前に置き換えられます。

−T tmpdir
一時ファイルを tmpdir に置きます。

−u
作成、変更されるファイルの更新時刻を CTM デルタが作成された時刻に 設定します。

−v
表示を増やします。

−V level
表示を増やします。 level は饒舌さの程度です。

−x regular_expression
CTM ファイル中の各ファイル名を regular_expression とマッチするか どうかを調べ、マッチすればそのファイルを除外します。このオプショ ンは何個でも指定できます。このオプションを指定すると .ctm_status のシーケンス番号のチェックが行なわれません。

CTM の処理対象にパス名を加えるには −e オプションを使います。

セキュリティ

CTM 自身、安全ではないプロトコルです - ソースコードへ加えられた修正が信頼 できるところから送られたことを認証しませんので、通常の電子メール等の信頼 できない媒体から CTM デルタを得た場合には注意が必要です。 CTM デルタを偽 造して、正当なものを交換または上書きし、悪意あるコードをあなたのソースツ リーに挿入することは、攻撃者にとって比較的簡単です。正当なデルタの到着が なんらかの方法で妨げられた場合、これを感知できるのは、後のデルタが同じ ファイルを触ろうとする時点です。この時点で、MD チェックサムが失敗します。

これを回避して安全なものにするために、 FreeBSD.org が作った CTM 部品に は、 GNU Privacy Guard ユーティリティ互換なフォーマットで暗号的に署名して います。このユーティリティは /usr/ports/security/gpg および Pretty Good Privacy v5 ユーティリティ /usr/ports/security/pgp5 から入手できます。適切 な公開鍵は ctm@FreeBSD.org を finger することで得られます。

このように署名された CTM デルタは、検知されることなく攻撃者が改変すること はできません。それゆえ、CTM デルタを電子メールで受信する場合には、 GPG ま たは PGP5 を使用して署名を確認することを勧めます。

環境変数

TMPDIR にパス名がセットされていると、ctm は一時ファイルの置き場所としてそ のパス名を使います。これに関しての詳細は tempnam(3) を参照して下さい。同 じ効果は −T フラグでも得られます。

関連ファイル

.ctm_status には、最後に適用した CTM デルタのシーケンス番号が含まれます。 このファイルを変更したり削除したりすると、 ctm は、とても混乱します。

−e−x オプションを使うとソースツリーの一部分を更新することができ、ソー スを一貫性のない状態にすることになります。これらのオプションを使うときに は、何をしているのかを理解していることが仮定されています。

使用例

cd ~cvs
/usr/sbin/ctm ~ctm/cvs-*

‘lib’ 以下のすべてのソースを取り出してパッチを当てるには以下のようにしま す。

cd ~/lib-srcs
/usr/sbin/ctm -e ’^lib’ ~ctm/src-cur*

診断

充分に説明的であるはずの沢山のメッセージが出力されます。 ‘‘ノイズレベル’’ は −q, −v, −V オプションで調整できます。

関連項目

ctm_rmail(1), ctm(5)

歴史

最初の試みは FreeBSD 1.1.5 の作業中に行われました。そして、たくさんのバグ と手法について徹底的に議論されました。

ctm コマンドは FreeBSD 2.1 から登場しました。

作者

CTM システムは Poul-Henning Kamp ⟨phk@FreeBSD.org⟩ によってデザインされ実 装されました。

このマニュアルページは
Joerg Wunsch ⟨joerg@FreeBSD.org⟩ が書きました。

日本語訳

野首 寛高(h-nokubi@nmit.mt.nec.co.jp): FreeBSD 用に翻訳

FreeBSD 10.0 March 25, 1995 FreeBSD 10.0

スポンサーリンク