cvs 서버 운영하는건 그리 어렵지 않던데요.
간단한 설치법은 다음과 같습니다.
* 배포판 : Redhat 6.2
* CVS : cvs-1.11-1
1.
cvs 사용자 및 그룹을 생성합니다.
# groupadd cvs
# ueradd -g cvs cvs
2.
/etc/inetd.conf 파일에 다음과 같이 넣어줍니다.
(Redhat 7.0이라면 xinet 관련 설정이 되겠지요.)
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --
allow-root=/home/cvs pserver
/etc/service 파일에 cvspserver 라는 항목이 2401번 포트에 정의되어 있어
야 합니다.
3.
inetd 슈퍼데몬을 재기동합니다.
# killall -HUP inetd
4.
cvs 시스템을 초기화합니다.
# su - cvs
$ cvs -d /home/cvs init <-- 최기화 하는 부분
$ ls -Al /home/cvs
drwxr-xr-x 4 cvs cvs 4096 3월 29 22:59 .
drwxr-xr-x 14 root root 4096 3월 29 15:28 ..
drwxrwxr-x 3 cvs cvs 4096 3월 29 22:57 CVSROOT
5.
cvs 내부 계정을 발급하고 접근권한을 설정합니다.
암호생성을 위해 아파치에서 제공하는 htpasswd 명령을 사용할 수도 있지만
저는 다음과 같은 Perl 스크립트(mkcvspass)를 만들어 사용하고 있습니다.
$ cd CVSROOT
$ (cat << _EOF_
#!/usr/bin/perl
if ($#ARGV ne 1) {
$basename = $ENV{'_'}; $basename =~ s/.*///g;
die "Usage:$basename [CVS ID] [Password]";
}
$arr
= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
$salt = substr($arr, int(rand(64)), 1) . substr($arr, int(rand
(64)), 1);
print $ARGV[0] . ":" . crypt($ARGV[1], $salt) . ":cvs";
_EOF_
) > mkcvspass
$ chmod +x mkcvspass
$ ./mkcvspass userid userpass
userid:Cj2XCzR4gyYjQ:cvs
$
추가할 사용자를 위와 같이 ./mkcvspass 명령으로 암호를 생성한 후
다음과 같이 passwd 파일에 기록합니다.
$ cat passwd
cvs:t1tSih91v8R7o:cvs
myway:9zzGC/u6WEa.:cvs
userid:Cj2XCzR4gyYjQ:cvs
$
위 정보는 : 기호를 구분자로 하여 다음과 같은 의미를 지닙니다.
cvsID:암호:시스템실제 cvs 계정
암호를 passwd 파일에 기록하기 위해서는 다음과 같이 바로 리다이렉션
해도 되겠지요.
./mkcvspass userid userpass >> passwd
읽기만 허용할 사용자를 readers 파일에 지정합니다.
다음의 경우 cvs로 cvs 시스템에 로그인한 사용자는 cvs 트리의 소스코드를
읽는 권한만 지니게 됩니다.
$ cat readers
cvs
$
6.
로그인을 시험합니다.
로컬 또는 원격 사용자는 다음과 같이 cvs 시스템에 접근할 수 있습니다.
(다음의 경우 myway 라는 cvs ID를 사용하였습니다.)
$ cvs -d :pserver:myway@127.0.0.1:/home/cvs login
(Logging in to myway@127.0.0.1)
CVS password:
$
아무 메세지가 출력되지 않았다면 정상 로그인된 것입니다.
cvs 명령에서 -d 옵션은 cvs root 를 뜻하는 것입니다.
만약 로컬 시스템이라면 바로 -d /home/cvs 와 같이 접근해도 되지만 파일
및 그룹의 접근권한 설정이 좀 번거롭기 때문에 로컬 시스템 사용자라도
위와 같이 cvs 서버로 로그인하도록 하는게 좋은것 같더군요.
모든 cvs 명령에 cvs root 정보가 동반되어야 하므로 -d 옵션으로 매번 넣어
주는게 귀찮다면(원격 시스템은 더더욱) CVSROOT 환경변수에 미리 정의해두
거나, 저처럼 alias 걸어두셔도 좋습니다.
bash의 경우 다음과 같이 해두었습니다.
export CVSROOT=:pserver:myway@127.0.0.1:/home/cvs
또는,
alias cvs='cvs -d :pserver:myway@127.0.0.1:/home/cvs'
이제부터는 -d 옵션 없이 cvs 명령을 수행해도 됩니다.
$ cvs login
(Logging in to myway@127.0.0.1)
CVS password:
$
프로젝트 초기화 및 사용법은 다른 문서를 참고하시기 바랍니다.
: 현재 개발중인 소스를 체계적으로 정리하고자 CVS 를 사용하려고 합니다.
: 설명서에 나와있는대로 저장소를 지정하고 사용자, 그룹을 추가했는데,
: 사용자계정에 암호인증방식으로 접속을 시도해봐도, 도무지 접속이 되지
: 않아, 이렇게 도움을 청합니다.
: 개발자들 사이에서는 많이 사용되고 있는것 같은데, 문서에 나와있는대로
: 따라해봐도, 도무지 접속이 되지 않네요....
: 원격접속은 물론이고, localhost로 접속을 해도 Connection Refused 란 메
시지만 계속 뜨고..
: 며칠째 자료를 뒤져봤지만, 마땅히 설정에 관한 자료는 찾아보기가 힘들어
서..
: 도움을 청합니다.
: 혹시, httpd.conf나 smb.conf 처럼 환경설정해주는 부분이 있는건지..
: 참고로, 실행환경은 Wow Linux 7.0 에 기본설치되어있는 cvs-1.10.8-8 버
전을 사용하고 있습니다.
: 도움주시면 정말 감사하겠습니다.