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 옵션으로 지정된 어카이버(archiver) 명령을 사용해, 그 파일에 백업 됩니다. 디폴트의 어카이버(archiver) 명령은 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
    디폴트의 어카이버(archiver)이다 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 용으로 번역