FreeBSD 핸드북 : 개발의 최전선: FreeBSD-current와 FreeBSD-stable : 인터넷 상에서 소스 트리를 동기화하기 : CVSup
Previous: CTM
Next: make world를 사용하여 시스템을 새롭게 세우기.

18.3.3. CVSup

John Polstra <jdp@FreeBSD.ORG>저,

이성곤 <skon@stats.snu.ac.kr>역.

18.3.3.1. 소개

CVSup은 원격 서버 호스트 마스터 CVS 보관소에서부터 소스 트리를 배포(distributing)하고 갱신(updating)하는데 쓰이는 소프트웨어 패키지입니다. FreeBSD 소스는 캘리포니아에 있는 중앙 개발 컴퓨터(machine) CVS 저장고에서 관리가 되어집니다. CVSup으로, FreeBSD 사용자들은 손쉽게 자신의 소스 트리를 최신으로 유지할 수 있습니다.

CVSup은 소위 갱신하는데 있어서 pull 모형이라는 것을 사용합니다. pull 모형 하에서, 원하기만 한다면, 각각의 클라이언트는 갱신할 것들에 대해 서버에 질의합니다. 서버는 각각의 클라이언트에서의 갱신 요청을 수동적으로 기다립니다. 이렇게해서 모든 개정 자료들은 클라이언트에 의해 조정됩니다. 서버는 청하지도 않은 개정자료들(updates)은 결코 보내지 않습니다. 사용자들이 개정자료를 얻기위해서는 일일이 CVSup 클라이언트를 실행시키거나, 일정한 원칙하에 자동적으로 실행시키는 크론(cron) 작업을 설정해야만 합니다.

"CVSup"이라는 말은, 단지 이것에 집중시켜서 보자면, 전체 소프트웨어 패키지를 지칭합니다. 주요 컴포넌트로는 각각의 사용자 컴퓨터에서 작동하는 클라이언트 "cvsup", 그리고 FreeBSD 미러 사이트에서 동작하는 서버 "cvsupd"가 있습니다.

FreeBSD 문서와 메일링리스트를 읽어본대로, sup에 대해 참고글(reference)을 볼 수 있습니다. sup은 CVSup의 전임자로서, 이것도 유사한 기능을 제공했습니다. CVSup은 sup처럼 거의 동일한 방식으로 사용되고, 사실, sup's 것과 후호환(backward-compatible)이 되는 설정파일을 사용합니다. sup은 더이상 FreeBSD 프로젝트에서 사용되지 않고 있는데, 이는 CVSup이 더욱 빠르고 유연하기 때문입니다.

18.3.3.2. 설치

FreeBSD 2.2 또는 그 이후 버전을 사용하는 경우, CVSup을 설치하는 가장 쉬운 방법은 자신의 선호에 따라 FreeBSD 포트 컬렉션의 포트를 사용하거나, 이와 대응하는 바이너리 패키지를 사용하는 것입니다.

FreeBSD-2.1.6 또는 2.1.7을 사용하고 있다면, 불운하게도 FreeBSD-2.1.{6,7}에 있지 않는 C 라이브러리를 요구한다는 사실때문에 바이너리 패키지를 사용할 수 없습니다. 그러나, FreeBSD 2.2에서와 같이 쉽게 포트를 사용할 수 있습니다. 간단히 tar 파일을 풀고서, cvsup 서브 디렉토리에 들어간 다음, "make install"이라고 치십시오.

CVSup은 Modula-3로 작성되었기에, 패키지이든 포트든 간에 Modula-3 런타임 라이브러리가 설치되어 있어야 합니다. 이것은 lang/modula-3-lib 포트나 lang/modula-3-lib-3.6 패키지를 이용하시면 됩니다. cvsup에 관해 동일한 방향으로 따라가다 보면, CVSup 포트 또는 패키지를 설치할 때 자동적으로 이 라이브러리들로 컴파일 그리고는/또는 설치가 될 것입니다.

Modula-3 라이브러리들은 너무나도 커다래서, 가져와서 컴파일 하는 것은 즉각적으로 처리할 수 있는 작업이 아닙니다. 이런 이유로 해서, 세번째 선택 사양이 제공되고 있습니다. USA 배포 사이트에서 *정적으로 링크된* CVSup의 FreeBSD 실행본을 가져가도록 하십시오.

이뿐만 아니라 전세계의 여러 FreeBSD FTP 미러 사이트에서도 가능합니다.

대다수 사용자들은 오직 클라이언트만이 필요할 뿐일 겁니다. 이러한 실행본들은 자체적으로 완비되어 있어서 FreeBSD-2.1.0에서 FreeBSD-current까지 어떤 버전에서도 작동할 것입니다.

정리하자면, CVSup을 설치하는 방법으로는:

18.3.3.3. 설정(Configuration)

CVSup의 동작은 "supfile"이라고 불리는 설정파일로 제어가능합니다. FreeBSD-2.2로 사용하고 있을 경우, 디렉토리 /usr/share/examples/cvsup에 몇가지 예제 설정 파일들이 있습니다. 2.2 이전의 버전의 경우 또한 이 예제들은 ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/에서 구하실 수 있습니다.

supfile에 있는 내용은 cvsup에 대한 다음의 질문들에 답을 제시할 것입니다:

다음에는, 위의 질문 각각을 돌아가며 답하는 전형적인 supfile을 구성해볼 것입니다. 그전에 먼저 supfile의 전 구조를 기술토록 하겠습니다.

supfile은 텍스트 파일입니다. 주석은 "#"로 시작하고 그 라인의 끝까지 확장될 수 있습니다. 비어있거나 주석만 있는 라인은 무시됩니다.

각각의 나머지 라인은 사용자가 받으려 하는 파일 모음을 기술합니다. 이 라인은 "컬렉션(collection)"의 이름으로 시작하는데, 이는 서버에서 정의된 파일들의 논리적인 묶음입니다. 컬렉션의 이름은 어떤 파일을 원하는 지 서버에게 알려주게 됩니다.. 컬렉션 이름 뒤에는 비어있거나, 추가적인 항목들이 오게 되는데, 빈칸으로 구분됩니다. 이러한 항목들이 위에서 제기된 질문들에 답을 하게 됩니다. 이에는 두가지 종류가 있는데: 플래그 항목(flag field)과 값 항목(value field)입니다. 플래그 항목은 단독으로 쓰이는 키워드로 되어있는데, 예로, "delete" 또는 "compress"가 있습니다. 값 항목 또한 키워드로 되어 있지만, 키워드는 빈칸이 없이해서 "="과 두번째 단어가 연달아 나옵니다. 예를 들어, "release=cvs"는 값 항목입니다.

supfile은 전형적으로 받고자하는 하나 이상의 컬렉션들을 정해둡니다. supfile을 구성하는 한 방법은 각각의 컬렉션마다 명확히 연관된 항목 모두를 정해주는 것입니다. 그러나, supfile의 라인의 길이가 너무 길어지는 현상을 초래하고, 대부분의 항목들이 supfile의 모든 컬렉션에서 동일하므로 불편합니다. CVSup은 이러한 문제들을 피하는 기본적인 메커니즘을 제공합니다. 특별한 가상-컬렉션 이름 "*default"로 시작하는 라인들은 supfile 하위 컬렉션들에서 기본으로 사용되는 플래그와 값을 정해주는데 사용될 수 있습니다. 기본 값은 컬렉션 자체에 다른 값을 정해주어 개개의 컬렉션마다 기본값을 덮어 쓸 수 있습니다. 또한 기본값은 추가적인 "*default" 라인으로 supfile 중간에서 바꾸거나 추가할 수도 있습니다.

이 배경 하에, FreeBSD-current의 소스 트리를 받고 업데이트하는 supfile을 구성해보도록 하겠습니다.

18.3.3.4. CVSup을 구동하기

이제 막 갱신을 하려는 중일 것입니다. 이를 하는데 있어 커맨드 라인은 꽤 단순합니다:

  cvsup supfile

여기서 "supfile"은 물론 방금 만들었던 supfile의 이름입니다. X11하에서 실행을 시키고 있다면, cvsup은 몇개의 버튼으로 이루어져 있는 GUI 창을 보일 것입니다. "go" 버튼을 누르고서 어떻게 작동하는지 주의해 보십시오.

이 예제에서는 실제의 "/usr/src" 트리를 갱신하고 있기 때문에, cvsup이 파일들을 갱신하는데 필요한 권한을 가지기위해 프로그램을 root로 실행시켜야 합니다. 직접 설정 파일을 만들었고 이전에 이를 실행시켜 본 적이 없었기 때문에, 이는 상당히 신경쓰이게 할 것입니다. 귀중한 파일들을 건드리지 않고 시험 실행을 시켜보는 손쉬운 방법이 있습니다. 단지 어딘가 편리한 빈 디렉토리를 만들고서는, 커맨드 라인에 추가적인 인수로 이를 지정해주면 됩니다:

  mkdir /var/tmp/dest
  cvsup supfile /var/tmp/dest

정해준 디렉토리는 모든 파일 갱신자료들의 도착(destination) 디렉토리로 사용됩니다. CVSup은 "/usr/src"에 통상의 파일들을 검사하겠지만, 그것들 중 어느 것도 변경하거나 삭제하지는 않을 것입니다. 일부의 파일 갱신자료들은 대신 "/var/tmp/dest/usr/src"에 저장될 것입니다. CVSup은 또한 이 방식으로 동작할 때 이 base 디렉토리 상태 파일들을 건드리지 않은 채 끝날 것입니다. 이 파일들의 새로운 버전들은 정해준 디렉토리에 쓰여질 것입니다. "/usr/src"에 읽기 접근을 하는 한, 이 시험 실행과 같은 종류를 수행하는데 있어 꼭 root일 필요는 없습니다.

X11을 사용하고 있지 않거나 GUI 환경을 좋아하지 않으면, cvsup을 실행시킬 때 command line에 두개의 옵션을 추가해야 합니다:

  cvsup -g -L 2 supfile

"-g"는 cvsup이 GUI를 사용하지 않는다는 알려주는 것입니다. 이는 X11를 실행하고 있지 않다면 자동적이지만, 그렇지 않으면 그것을 명시해주어야 합니다.

"-L 2"는 cvsup에게 하고있는 모든 파일 갱신자료의 세부사항을 출력하라 알려주는 것입니다. 출력수준에는 "-L 0"에서 "-L 2"가 있습니다. 기본은 0인데, 에러 메세지를 제외하고는 완전히 침묵함을 의미합니다.

사용가능한 다른 옵션들도 많이 있습니다. 이들에 관한 관단한 목록을 보려면, "cvsup -H"을 치십시오. 더 자세한 사항은, 매뉴얼 페이지를 보도록 하십시오.

이러한 갱신 방법에 만족한다면, cron(8)을 사용해서 cvsup의 규칙적 실행토록 배치할 수 있습니다. 분명히, cron으로 이를 실행할 때 cvsup이 GUI를 사용하지 않도록 해야 한다는 것을 명심하십시오.

18.3.3.5. CVSup 파일 컬렉션

CVSup으로 사용가능한 파일 컬렉션들은 계츰적으로 구성되어 있습니다. 몇 개의 커다란 컬렉션이 있고, 그것들은 더 작은 서브-컬렉션으로 나누어집니다. 커다란 컬렉션을 받는 것은 이 서브-컬렉션의 각각의 것들을 받는 것과 동등합니다. 컬렉션 간의 계층적 연관성은 아래 목록에서 들여쓰기를 사용해 반영해 놓고 있습니다.

대부분 일반적으로 사용되는 컬렉션들은 src-all, cvs-crypto 그리고 ports-all 입니다. 다른 컬렉션들은 오직 특수한 목적을 가진 조그만 모임에서만 사용되고, 그리고 일부 미러 사이트에서는 그들 모두를 옮겨놓지 않기도 합니다.

cvs-all release=cvs

미 대외비의 암호화 코드를 배재한, 으뜸 FreeBSD CVS 보관소.

distrib release=cvs

FreeBSD의 배포와 미러링과 연관된 파일들

doc-all release=cvs

FreeBSD 핸드북과 다른 문서의 소스

ports-all release=cvs

FreeBSD port 컬렉션.

ports-archivers release=cvs

압축 툴들.

ports-astro release=cvs

천문 관련 포트

ports-audio release=cvs

소리 지원.

ports-base release=cvs

/usr/ports의 최상부에 있는 잡다한 파일들.

ports-benchmarks release=cvs

벤치마크.

ports-biology release=cvs

생물학.

ports-cad release=cvs

CAD 툴들.

ports-chinese release=cvs

중국어 지원.

ports-comms release=cvs

통신 소프트웨어.

ports-converters release=cvs

문자 코드 변환기들.

ports-databases release=cvs

데이터베이스들.

ports-deskutils release=cvs

컴퓨터가 발명되기 전에 책상에 있었던 것들.

ports-devel release=cvs

개발 유틸리티들.

ports-editors release=cvs

편집기들.

ports-emulators release=cvs

다른 OS에 대한 에뮬레이터들.

ports-games release=cvs

게임들.

ports-german release=cvs

독일어 지원.

ports-graphics release=cvs

그래픽 유틸리티들.

ports-japanese release=cvs

일본어 지원.

ports-korean release=cvs

한국어 지원.

ports-lang release=cvs

프로그래밍 언어.

ports-mail release=cvs

전자우편 소프트웨어.

ports-math release=cvs

수리적 계산 소프트웨어.

ports-mbone release=cvs

MBone 어플리케이션들.

ports-misc release=cvs

범주에 해당 않는 유틸리티들.

ports-net release=cvs

네트워킹 소트프웨어.

ports-news release=cvs

USENET 뉴스 소프트웨어.

ports-plan9 release=cvs

Plan9통해 나온 다양한 프로그램들.

ports-print release=cvs

출력 관련 소프트웨어.

ports-russian release=cvs

러시아어 지원.

ports-security release=cvs

보안 유틸리티들.

ports-shells release=cvs

커맨드 라인 쉘들.

ports-sysutils release=cvs

시스템 관리 유틸리티들.

ports-textproc release=cvs

문서 처리 유틸리티들 (탁상 출판을 포함하지는 않습니다).

ports-vietnamese release=cvs

베트남어 지원.

ports-www release=cvs

WWW과 관련된 소프트웨어.

ports-x11 release=cvs

X 윈도우 시스템을 지원하는 포트

ports-x11-clocks release=cvs

X11 시계들.

ports-x11-fm release=cvs

X11 파일 매니저들.

ports-x11-fonts release=cvs

X11 fonts and font utilities. X11 글꼴과 글꼴 유틸리티들.

ports-x11-toolkits release=cvs

X11 툴킷들.

ports-x11-wm release=cvs

X11 윈도우 매니저들.

src-all release=cvs

The main FreeBSD sources, excluding the export-restricted cryptography code. 미 대외비의 암호 코드를 배제한, 으뜸 FreeBSD 소스들.

src-base release=cvs

/usr/src의 최상부에 있는 잡다한 파일들.

src-bin release=cvs

단일-사용자 모드에 필요할만한 사용자 유틸리티들 (/usr/src/bin).

src-contrib release=cvs

FreeBSD 프로젝트에 해당하지 않는 유틸리티들과 라이브러리들, 비교적 변경되지 않은 채 사용됩니다. (/usr/src/contrib).

src-etc release=cvs

시스템 설정 파일들 (/usr/src/etc).

src-games release=cvs

게임들 (/usr/src/games).

src-gnu release=cvs

GPL 기반의 유틸리티들 (/usr/src/gnu).

src-include release=cvs

헤더 파일들 (/usr/src/include).

src-kerberosIV release=cvs

KerberosIV 보안 패키지 (/usr/src/kerberosIV).

src-lib release=cvs

라이트러리들 (/usr/src/lib).

src-libexec release=cvs

보통 다른 프로그램에 의해 실행되는 시스템 프로그램들 (/usr/src/libexec).

src-release release=cvs

FreeBSD 릴리즈를 제작하는데 필요한 파일들 (/usr/src/release).

src-sbin release=cvs

단일-사용자 모드에 관한 시스템 유틸리티들 (/usr/src/sbin).

src-share release=cvs

복수의 시스템 사이에 공유될 수 있는 파일들 (/usr/src/share).

src-sys release=cvs

커널 (/usr/src/sys).

src-tools release=cvs

FreeBSD 관리에 관한 다양한 툴들 (/usr/src/tools).

src-usrbin release=cvs

사용자 유틸리티들 (/usr/src/usr.bin).

src-usrsbin release=cvs

시스템 유틸리티들 (/usr/src/usr.sbin).

www release=cvs

WWW 자료에 관한 소스들.

cvs-crypto release=cvs

미 대외비의 암호 코드.

src-crypto release=cvs

FreeBSD 프로젝트와 관계없는 미 대외비의 유틸리티와 라이브러리들, 비교적 변경되지 않은 채 사용됩니다. (/usr/src/crypto).

src-eBones release=cvs

Kerberos와 DES (/usr/src/eBones).

src-secure release=cvs

DES (/usr/src/secure).

distrib release=self

CVSup 서버의 자체 설정 파일들. CVSup 미러 사이들에서 사용됩니다.

gnats release=current

GNATS 버그-추적 데이터베이스.

mail-archive release=current

FreeBSD 메일링 리스트 아카이브.

www release=current

설치된 WWW 데이터. WWW 미러 사이트에서 사용됩니다.

18.3.3.6. 공지, 질문, 그리고 버그 리포트

CVSup의 FreeBSD-연관된 토론은 대부분 FreeBSD 기술적 토의 메일링 리스트 <freebsd-hackers@FreeBSD.ORG>에서 이루어집니다. 소프트웨어의 새 버전들은 FreeBSD 공지사항 메일링 리스트 <freebsd-announce@FreeBSD.ORG>뿐만 아니라 거기에서도 공지됩니다.

질문과 버그 리포트들은 cvsup-bugs@polstra.com에 프로그램의 저자에게 보내져야 합니다.


FreeBSD 핸드북 : 개발의 최전선: FreeBSD-current와 FreeBSD-stable : 인터넷 상에서 소스 트리를 동기화하기 : CVSup
Previous: CTM
Next: make world를 사용하여 시스템을 새롭게 세우기.