EN JA
CTM(1)
CTM(1) FreeBSD General Commands Manual 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” (メールを介して cvs) でしたが、代わりに、今は、“Current Through eMail” (メールを介して最新) と呼ぶことがよりふさわしいと思われます。

ctm ユーティリティは、現在、ディレクトリツリーの 2 つのバージョンの間のデルタを作成して適用する決定的な方法であることを意味します。

デルタを作って、それを適用するための 2 つの部品があります。これらは、2 つの完全に異なったものです。

使用法

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

ctm コマンドは、複数のパスで実行します。次のパスを始まる前に、各パスで全体の入力ファイルを処理します。

ファイル name を取り掛かる前に、 ctm は、最初に、ファイル name.ctm が存在するかどうかチェックします。このファイルが存在しているなら、 ctm は、代わりにそれに取り組みます。

パス 1 は、入力ファイルが正常であるか確認します。構文、データ、と全体の MD5 チェックサムが、チェックされます。これらのどれかが失敗するなら、 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
regular_expression に対して CTM ファイルの各名前をマッチさせ、マッチするなら、ファイルを処理し、そうでなければ、そのままとします。いくつでもこれらのオプションを指定できます。このオプションの使用は、 .ctm_status シーケンス番号のチェックを無効にします。例えば、式 ^usr.sbin/ctm は、 usr.sbin/ctm ソースディレクトリとその下のすべてのパス名を選択します。

-x オプションを使用して CTM によって処理対象とされたパス名を無効にすることができます。

-F
強制 (force) します。
-k
ファイルとディレクトリを保持し、CTM ファイルが削除されると指定したとしても、それらを削除しません。 -B オプションが指定されるなら、これらのファイルとディレクトリは、バックアップされません。
-l
CTM の実行によって変更されるファイルとそれらで実行されるアクション (動作) をリストします。 -l オプションの使用は、 .ctm_status チェックと操作されるソースツリーでの整合性チェックを無効にします。どのファイルが与えられたコマンド行のオプションの組によって変更されるかを決定するために、 -e-x オプションと -l オプションを組み合わせることができます。
-q
少ししか説明しません。
-t tar-command
デフォルトのアーカイバ tar の代わりに tar-command を使用します。このオプションは、バックアップファイルが -B オプションを使用してい指定された場合にだけ、効果があります。 tar コマンドの %s は、バックアップファイルの名前で置き換えられます。
-T tmpdir
一時ファイルを tmpdir の下に置きます。
-u
作成されて変更されたファイルの更新時刻を CTM デルタの作成時刻に設定します。
-v
より多く説明します。
-V level
より多く説明します。 level は、やかましさのレベルです。
-x regular_expression
regular_expression に対して CTM ファイルの各名前をマッチさせ、マッチするなら、ファイルを、そのままとします。いくつでもこれらのオプションを指定できます。このオプションの使用は、 .ctm_status シーケンス番号のチェックを無効にします。

-e オプションを使用して、CTM の処理対象としてパス名を選択することができます。

セキュリティ

そのままでは、CTM は、安全でないプロトコルです - ソースコードに適用された変更が、信頼できるところから送信されたことの認証はありません、それで、 CTM デルタが、通常のメールのような信頼できないメディアを通して得られるなら、注意する必要があります。攻撃者が正規のものに置き換えるか、または優先するために CTM デルタを偽造し、利用者のソースツリーに悪質なコードを挿入することは、比較的簡単なことです。正規のデルタが到着することをどうにかして妨げられるなら、後のデルタが、MD5 チェックサムが失敗する点で、同じファイルを変更することを試みるまで、これは見つからずに済むでしょう。

この安全でない状態を改善するために、FreeBSD.org によって生成された CTM の部品は、/usr/ports/security/gpg と Pretty Good Privacy v5 ユーティリティ、/usr/ports/security/pgp5 で利用可能な、 GNU Privacy Guard ユーティリティと互換性のある形式で暗号付きで署名されます。 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>は、このマニュアルページを書きました。

March 25, 1995 FreeBSD