2009년 8월 19일 수요일

[Linux-CVS-1] CVS 서버 설정

개발 프로젝트 진행 시, 웬만한 프로젝트는 대부분 팀을 이뤄서 하게 된다.

 

그럴 때, 버전 관리가 필수적인데, 필요한 프로그램이 CVS이다.

 

 

CVS의 정의

 

CVS(Current Versions System, 동시 버전 시스템)은 소프트웨어 프로젝트를 진행할 때, 파일로 이뤄진 모든 작업과 변화를 추적해서 여러 개발자가 협력적이고 효율적으로 작업을 할 수 있게 한다. CVS는 GPL(GNU General Public License, GNU 일반 공중 허가서) 하에서 배포되는 오픈 소스 프로그램이다.

 

 

CVS 설치

 

1. CVS 설치 여부 확인

 

$ cvs -v
$ cvs -version

 

위 방법으로 확인이 가능하다. CVS가 설치되어 있다면 버전 정보가 보일 것이다.

설치되어 있지 않다면 CVS를 먼저 설치해야한다.

 

2. CVS 설치

 

CVS는 http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-linux/RPMS/i386/에서 패키지를 다운받을 수 있다.

 

 

 

CVS 리눅스 계정 추가

 

CVS를 관리할 계정을 생성해야 한다. 계정을 따로 생성하지 않고 관리해도 되지만 따로 계정을 두고 관리하는 것이 관리 차원에서 효율적이다.

 

추가되는 사용자 계정의 홈 디렉토리가 CVS의 저장소가 될 것이다.

 

$ groupadd cvs              - cvs 그룹 추가
$ useradd -g cvs cvs
    - cvs 그룹에 계정 추가
$ passwd cvs                 - cvs 계정 패스워드 설정

 

 

 

CVS 저장소(repository) 설정

 

여러 명이 동시에 작업해야 하므로 공통으로 저장할 장소가 필요하다. 그 장소를 저장소(repository)라고 부르며 CVS의 전반적인 설정 파일, 버전 관리에 관련된 정보, 파일 별 작업 기록 등이 저장된다. 설정 파일 및 작업 기록은 CVS 프로그램이 자동으로 관리하므로 사용자가 건드릴 필요는 전혀 없다.

 

$ cvs -d /home/cvs init


/home/cvs 디렉토리를 CVS 저장소로 초기화한다. -d 옵션은 저장소가 될 디렉토리 경로를 지정하기 위한 옵션이고, 'init'은 저장소를 초기화하기 위한 cvs 명령어이다.

 

명령어 실행 후 /home/cvs 디렉토리를 확인해 보면 'CVSROOT'라는 이름의 디렉토리가 생성되어 있으며 각종 설정 파일이 그 디렉토리 내에 들어있다는 것을 알 수 있다.

 

 

 

CVS 디렉토리 사용 권한 설정

 

설정했던 디렉토리를 cvs 계정이 사용 가능하도록 지정해 준다.

 

$ chown -R cvs:cvs /home/cvs
$ chmod 770 /home/cvs /home/cvs/CVSROOT


 

 

CVS 서비스 설정

 

1. 2041 포트 확인

 

CVS 전용 계정으로 관리하는 경우 클라이언트는 CVS 서버에 pserver 프로토콜을 사용해 접근한다. 이 프로토콜을 사용하려면 몇 가지 준비 사항이 필요하다.

 

우선 pserver 프로토콜이 사용하는 포트가 사용 가능하게 설정되어 있는지 확인한다.

 

$ cat /etc/services | grep 2401


이 명령어의 결과가 출력이 된다면 pserver 프로토콜을 사용할 준비가 되어 있는 것이다.

 

 

2. pserver 환경 파일 작성

 

pserver 프로토콜을 사용하기 위해서는 환경 파일을 작성해야 한다. 슈퍼 데몬인 xinetd를 사용하는 경우 우선 /etc/xinetd.d 디렉토리에 cvspserver 파일이 있는지 확인하고 없으면 파일을 만든다.

 

$ vi /etc/xinetd.d/cvspserver


새 파일로 vi 에디터가 뜨면 다음 내용을 입력한다.

 

service cvspserver
{
     disable = no
     flag = REUSE
     socket_type = stream
     wait = no
     user = root
     server = /usr/bin/cvs
     server_args = -f --allow-root=/home/cvs pserver
     log_on_failure += USERID
}


--allow-root는 cvs 저장소가 /home/cvs 임을 명시하기 위해서 사용된다.

만약에 새로운 프로젝트 project1을 생성하였을 경우, 이 프로젝트는 /home/cvs/project1 디렉토리에 저장된다.

 

cvspserver 파일 편집을 완료했으면 저장 후 xinetd 서비스를 재시작한다.

 

$ service xinetd restart


 

 

CVS 전용 사용자 계정 추가

 

CVS 사용자 계정은 실제로 프로젝트를 진행하는 팀원 개개인의 계정이다. 팀원들은 이 계정을 통해 프로젝트 파일에 접근해서 작업을 수행할 것이다.

 

CVS 계정을 더 쉽게 추가하기 위해 /usr/local/bin 디렉토리에 cvspasswdgen 파일을 생성하고 다음의 내용을 스크립트를 기록한다.

 

$ vi /usr/local/bin/cvspasswdgen

 

#!/usr/bin/perl

 

($u, $p)=@ARGV;

@d=(A..Z,a..z);

$s=$d[rand(52)].$d[rand(52)];

print $u.":".crypt($p, $s).":cvs\n"


이어서 cvspasswdgen 파일에 대해 다음과 같이 실행 권한을 부여한다.

 

$ chmod 755 /usr/local/bin/cvspasswdgen

 

이제 다음과 같은 명령어로 CVS 전용 사용자 계정을 추가할 수 있다. cvspasswdgen 명령어의 첫 번째 파라미터는 사용자 계정 이름이고, 두 번째 파라미터는 해당 계정의 패스워드이다.

 

$ cd /home/cvs/CVSROOT
$ cvspasswdgen cvsuser1 cvsuser1_passwd >> passwd


위 명령어를 입력하면 passwd 파일에 계정 정보가 입력될 것이다. 이제 이클립스와 같은 IDE에서 CVS 전용 계정을 통해 접속하면 된다.

 

다음 번에는 프로젝트 초기화에 대해서 정리해 봐야지.

 

참고 : [강좌] Linux 에서 CVS 서버 세팅하기.

댓글 1개: