리눅스에 CVS 설치 및 사용법

Toggle Space Navigation Tree
Space Map

CVS 관련 다양한 툴 설치

Summary : 리눅스 서버를 애플리케이션 개발을 위한 서버로 사용하기 위하여 Telnet, FTP, Apache, CVS
서버를 설치하는 방법에 대하여 다룬다. 또한 CVS의 효율적인 사용을 위하여 ViewCVS 설치, CVSGraph등의
설치 및 사용방법에 대한 내용도 다루게 된다.

리눅스 설치

레드헷 리눅스 9.0 이 디폴트로 설치를 가정한다. 설치시 주의 사항은 설치하다가 중간에 rpm패키지를 고르는
부분이 나온다 그 부분에서 webserver, ftpServer, networkServer는 모든 패키지를
선택해주어야한다. 일단 rpm설치를 기본으로 진행한다. 소스코드를 사용하여 설치하려는분들은 이문서를 한번 읽어본후
쉽게 적용할수 있을것 같다.

Telnet Server Installation

telnet 127.0.0.1로 체크해보면 접속이 안될 것이다 분명 설치를 햇음에도 불구하고 아직 시작을
시키지 않앗기 때문이다. 그럼 다음을 따라 해보자.

*cd
/etc/xinetd.d*

ls

telnet 이라는
파일이 보이는가...

vi telnet 하면 다음과같이 보인다.

service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = yes
}

여기에서 disable을 no로 만들어 준후 저장하고 xinetd를 재실행 시켜줘야한다.

:wq!
[root@ragonLaptop xinetd.d]# /etc/rc.d/init.d/xinetd restart
Stopping xinetd: [  OK  ]
Starting xinetd: [  OK  ]

이제 테스트 해보자.

*telnet
127.0.0.1*

접속이 성공되면 세팅이 완료된것이다. 이제 여러분은
자신의 윈도우 데스크탑에서 telnet을 통해서 서버에 접속할수 잇다.

Apache Web Server Installation

Httpd데몬이 돌고 잇는지 확인한다.

  1. ps -ef | grep httpd

작동중이면 여러개의 httpd데몬이 보일것이다. 여러분은 설치는 미리 하셨으므로 실행만
시키면된다.

[root@ragonLaptop init.d]#
/etc/rc.d/init.d/httpd start[ok]

이제 웹브라우저로
접속해본다.

http://127.0.0.1

웹브라우져가 페이지를
찾으면 성공한것이다.

FTP Server Installation

9.0부터 vsftpd로 바뀌었단다. Rpm으로설치를 햇으므로 우리는 또 실행만 시켜주면 된다.
실행전에

  1. cd /etc/vsftpd
  1. vi
    ./vsftpd.conf

anonymous_enable=yes 이부분을 no로 바꾼다
..그리고 여러가지 설정을 자신에 맞게 바꾼다.

  1. cd
    /etc/rc.d/init.d/
  1. ./vsftpd start

Starting
vsftpd for vsftpd: [ OK ]

이 메세지가 나오면 성공이다. ftp 도
접속을 해본다

[root@ragonLaptop init.d]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcome to RagonLapTop FTP service.
Name (127.0.0.1:ragon): ragon
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.

접속에 성공하면 된거이다. Httpd나 ftp 가 항상 부팅시 시작되게 하려면 어찌 하면 될까? 다음과
같다.

cd /etc/rc.d

vi rc.local

다음 을 추가해준다.

touch /var/lock/subsys/local =< 이건 원래
잇는것

/etc/rc.d/init.d/httpd start =< 추가

/etc/rc.d/init.d/vsftpd start =< 추가

이제
리부팅하더라도 매번 실행시켜줄 필요가 없다. 일단 기본적인 서버 세팅을 끝났다.

CVS Server Installation

http://doc.kldp.org/KoreanDoc/html/CVS_Tutorial-KLDP/index.html

이글을 참고로 하였으나 이글에 약간 부족한 부분만 추가하여 따라하기 방법으로 진행한다. 사용법에 관해서는 인테넷의
여러글이 나와있으므로 검색해서 읽어보는게 좋을거 같다.

이번 장에서는 설치에 관한 부분만 소개한다.
cvs서버는 pserver를 만들려고 한다. 기타 다른 서버는 다른 문서들을 참고하기 바란다.

일단
cvs사용자들이 시스템에서 어떤 시스템계정을 가질지를 입력해주어야한다. 그러므로 cvs사용자들의 시스템 계정을
cvs라고 만들겟다. 우선 cvs라는 시스템계정이 존재하는지 확인해보자.

vi
/etc/passwd

지금 현재 있는계정이 전부 보일것이다 그중에 cvs라는 이름이 잇는지
확인해보자. 있으면 사용자 등록과정을 생략해도 된다.없으면 cvs 시스템 계정을 등록해주자.

/usr/sbin/adduser cvs

    1. cvs
      -d /home/cvs init*

/etc/services에 다음과 같은 줄이
있는지 살펴 보자.

cvspserver 2401/tcp

없으면 추가..해야함. /etc/xinetd.d에 cvspserver란 이름으로 파일을 만든다

vi /etc/xinetd.d/cvspserver

내용은 다음과같다.

# default: on
# description: The cvspsever serves CVS Passowrd Server sessions; it uses \
#          unencrypted username/password pairs for authentication.
service cvspserver
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/cvs
        server_args     = -f --allow-root=/home/cvs pserver
        log_on_failure  += USERID
}

띄어쓰기 주의해라.특히

*server_args = -f
--allow-root=/home/cvs pserver*

이부분..뒤쪽 =
다음에는 공백이 없다.

[root@ragonLaptop xinetd.d]# pwd
/etc/xinetd.d
[root@ragonLaptop xinetd.d]# ls
chargen      daytime      finger  ipop3  rlogin   services  time
chargen-udp  daytime-udp  imap    ntalk  rsh      sgi_fam   time-udp
cups-lpd     echo         imaps   pop3s  rsync    talk
cvspserver   echo-udp     ipop2   rexec  servers  telnet

cvspserver가 보이는가??

이제 xinetd 를 재시작하면 cvs 서버가 실행된다.

[root@ragonLaptop init.d]# /etc/rc.d/init.d/xinetd restart
Stopping xinetd: [  OK  ]
Starting xinetd: [  OK  ]

다음부터는 시스템이 시작되자 마자. Cvspserver가 실행될것이다.

일부 레드헷버젼에서는
checkout을 하려고 하면 계속해서 permission denied라는 에러가 난다 이럴때는
server_args에 ?f를 추가하면 된다. 또 cvsignore파일의 퍼미션문제가 나더라도 아래처럼 해주면
된다.

*server_args = -f --allow-root=/home/cvs
pserver*

이제 계정만 발급하면된다.

암호 인증 방식을 이용하는 경우, 계정과 암호는 저장소의 CVSROOT 디렉토리 밑에
passwd란 이름의 파일에 저장된다. 여기에서는 /home/cvs/CVSROOT/passwd가 될 것이다 하지만
이 파일은 처음에는 존재하지 않는다. 그러므로 직접 만들어주어야 한다. 먼저 예를 하나 보도록 하자.

minskim:YxNPCzaM/WCp2:cvs

sehkone:Yw2najHG5cLfo:cvs

각 줄은 한 사용자에 대한 정보를 담고 있다.
줄은 ':'을 경계로 다시 세 부분으로 나뉘는데 첫 부분이 사용자의 CVS 계정 이름(씨스템 계정과는 무관하다),
그 다음은 암호, 그리고 마지막은 씨스템 계정 이름이다. 즉, 이 파일에는 현재 minskim과
sehkone이라는 두 사용자가 등록되어 있고, 이들이 CVS 이용시에는 cvs란 씨스템 계정의 권한을 갖는
것이다.

암호부분은 유닉스 씨스템에서 전통적으로 사용되는 crypt 함수를 이용하여 변환된
값이 저장되어 있다. 새로운 사용자를 추가하려면 같은 형식으로 한 줄을 추가해 주면 된다.


이제 Passwd파일을 만들고 사용자를 추가해보자.

> Cd /home/cvs/CVSROOT
경로를 변경한뒤 다음과 같이 입력한다.

htpasswd -n ragon(아이디) 그런후에는
패스워드를 넣으라고 메세지가 나온다 알맞은 패스워드를 넣으면 결과값이 화면에 보인다.

ragon:8Sk4IF407ATPY
이런식이다... 이제 이 결과를 복사하여
passwd파일에 넣어주어야한다.

Vi passwd

위에서 복사한 값을
입력한다.

ragon:8Sk4IF407ATPY:cvs

우리는 지금 cvs사용자들을 시스템계정중 cvs라는 사용자의 권한으로 모든 일을 처리하기 위해
cvs라는 시스템 유저를 넣어주었다. 저장하고 나온다. 새로운 사용자를 추가하기 위해서는 위와같은 과정으로 한줄을
더 추가해주면된다. 마지막으로 필요한것은 cvs란 시스템 계정에 저장소에 대한 읽기 쓰기 권한을 주는 것이다.

vi /etc/group

위의명령을 실행하면 현재 시스템의 그룹에 대해 쭉
나온다 cvs그룹이 잇는지 확인하기바란다. 없으면

/usr/sbin/addGroup cvs

로 그룹을 만들어준다.

그룹이 생성?으면 다음명령어를 실행하여 권한을
주어야 한다.

  1. chgrp -R cvs /home/cvs
  1. chmod ug+rwx
    /home/cvs /home/cvs/CVSROOT

이제 cvs서버가 전부 세팅이 ?다.
여러분은 여러분이 추가한 계정으로 접속을 할수 잇을것이다.

이제 확인을 해보자 ..
wincvs나 이클립스등으로 접속을 시도해보면 알수 있을것이다. 이부분은 다음장에서 cvs클라이언트의 사용법에
대해서 이야기하면서 자세히 이야기 한다.

이클립스에서 cvs관련 화면을 열고 cvs추가메뉴를
눌러서 내용을 입력한후 ok버튼을 누르면 접속이 되면 성공한것이다.

#####참고 프로젝트를
sharing을 할때 .cvsignore permission 어쩌고 저쩌고 가 나오면 server_args 에
-f 옵션을 추가한다.

읽기 전용 CVS 설정

가장 널리 쓰이는 암호 인증 방식의 예는
읽기 전용 사용자가 필요할 때일 것이다. 많은 공개 프로젝트들이 이러한 읽기 전용 계정을 제공하여 누구나 파일들을
받아갈 수 있도록 하고 있다. 그렇다면 저장소에 대한 접근 권한을 제어할 수 있다는 방법이 있다는 얘기인데,
이러한 것은 어디에서 설정해 줄 수 있을까? CVS는 접근 제어를 위해 두 가지 방법을 제공한다. CVSROOT
디렉토리에 위치한 readers와 writers란 파일이 바로 그것이다. 이 파일들은 passwd와 마찬가지로
처음에는 존재하지 않는다. 기능이 필요하다면 직접 만들어 주어야 하는 파일들인 것이다. 형식은 매우 간단해서,
CVS 계정 이름을 한 줄에 하나씩 나열하기만 하면 된다.

읽기 전용 계정을 만들고 싶다면
readers를 이용한다. sehkone과 chang이란 CVS 계정을 읽기 전용으로 하고 싶다면 CVSROOT
디렉토리에 다음과 같이 readers를 만든다.

Sehkone

chang

마지막 줄 끝에 개행문자를 꼭 넣어 주어야 함을 유념하기 바란다. 이렇게 하면
sehkone과 chang이란 사용자는 읽기만이 허용되며, 나머지 모든 사용자는 읽기와 쓰기가 모두 가능하다.

하지만 writers 파일이 있다면 사정이 전혀 달라진다. writers에 이름이 올라 있는
계정에 한해서만 읽기와 쓰기가 허용되며, 나머지는 모두 읽기 전용 계정이 된다. 그렇다면 readers와
writers가 모두 있는 경우는 어떻게 될까? 이 경우 readers에는 이름이 없고 writers에만 이름이
있는 계정은 읽기와 쓰기 권한을, 나머지 모든 계정은 읽기 전용 권한만을 얻는다.

이제
cvs의 서버설치는 전부 끝났다.사용하는것만 남앗다.. 하나 추가로 cvs상태를 웹으로 볼수있는 viewcvs를
설치하는일만 남앗다 잠시 숨을 고르고 viewcvs를 설치해보자.

View CVS Installation

*메인 사이트 : *

http://viewcvs.sourceforge.net/

cvs상태를 웹으로볼수가 잇는
프로그램이다. Install파일을 읽어보면 간단히 설치할수가 잇다. 꼭 한번 install파일을 읽고난 후에
따라해보기 바란다.

Prerequisites: Python 1.5 or later           (http://www.python.org/)
               RCS, Revision Control System
                 (http://www.cs.purdue.edu/homes/trinkle/RCS/)
               read-only, physical access to a CVS repository
                 (See http://www.cvshome.org/ for more information)
			
  1. wget
    http://viewcvs.sourceforge.net/viewcvs-0.9.2.tar.gz

실행하면 다운로드를 현재 폴더에 받게 된다.

[root@ragonLaptop
download]# ls

viewcvs-0.9.2.tar.gz

#gzip -d
viewcvs-0.9.2.tar.gz

실행하면

[root@ragonLaptop
download]# ls

viewcvs-0.9.2.tar

와 같은 메세지가 나온다. 압축이
풀린것이다.

#tar xvf viewcvs-0.9.2.tar

tar압축을
해제한다.

[root@ragonLaptop viewcvs-0.9.2]# ls

cgi
lib standalone.py TODO website

CHANGES LICENSE.html
templates tools

INSTALL README tests viewcvs-install

위와같은 리스트가보이면 압축을 전부 해제한것이다. 이제부터 설치를 해보겟다.

  1. ./viewcvs-install

실행하면 설치 패스를물어본다 ..난 디폴트값으로
한다.

Installation Path [/usr/local/viewcvs-0.9.2]:

엔터를 누르면 인스톨을 한다. 이제 각각의 conf파일을 설정해야한다. 다음의 4개 항목을
수정한다.

cvs_roots
default_root
rcs_path
mime_types_file
# cd /usr/local/viewcvs-0.9.2/
# vi ./viewcvs.conf

....
cvs_roots =
        Development : /home/cvsroot

# this is the name of the default CVS root.
default_root = Development

# uncomment if the RCS binaries are not on the standard path
#rcs_path = /usr/bin/
.....
#mime_types_file = /usr/local/apache/conf/mime.types

위와같은 부분을 찾아서 수정한다.

cvs_roots = Development :
/home/cvs

=< cvs-Root의 경로를 쓴다.

default_root =
Development

=< cvsRoot의 이름중 하나를 쓴다.

rcs_path
= /usr/bin/

=< rlog등이 설치되잇는경로를 쓴다.어디잇는지 모르겟으면

[root@ragonLaptop etc]# whereis rlog

rlog:
/usr/bin/rlog /usr/share/man/man1/rlog.1.gz

그러므로
/usr/bin 으로 설치해주엇다 각각의 환경에 맞게 실행하면 된다.

mime_types_file = /etc/mime.types

=< rpm설치의
경우이다.각각의경우에 맞게 설치해주면된다. 알수가 없으면 다음처럼 한다.

[root@ragonLaptop etc]# whereis httpd

httpd:
/usr/sbin/httpd.worker /usr/sbin/httpd /etc/httpd
/usr/lib/httpd /usr/share/man/man8/httpd.8.gz

그러므로

  1. cd /etc/httpd/conf
  1. vi httpd.conf

다음을 찾는다.

#

  1. TypesConfig describes where
    the mime.types file (or equivalent) is
  1. to be found.

#

TypesConfig /etc/mime.types

마임 타입 경로를 찾았다 이와
같이 알수 있다. 찾앗으면 설정파일에 다시 입력하고 저장한다.

다음으로 웹서버의 cgi경로를
찾아야한다. 위와같이 http.conf를 다시 열어본다.

  1. vi httpd.conf

다음 부분을 찾는다.

ScriptAlias /cgi-bin/
"/var/www/cgi-bin/"

이것이 cgi경로이다.. 이부분에 viewcvs파일을
카피해주어야한다.

카피하기전에 다음 부분을 찾는다.

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

이부분은 cgi가 실행될수 잇는지 어떤지를 알려주는 옵션이 있다 이부분을 그렇게 수정하지 않으면 viewcvs가
작동되지 않는다.

Options None =< Options ExecCGI

이렇게 수정해준다.

저장하고 httpd를 다시 시작한다.

  1. /usr/sbin/apachectl restart

이제 웹서버가 cgi를 실행시킬 준비가
됫다.

다시 돌아가서 cgi파일들을 카피해야한다. Cgi디렉토리를 잘 기억하고잇어야한다
조금전에 찾은디렉토리경로는 /var/www/cgi-bin이었다.

  1. cd
    /usr/local/viewcvs-0.9.2/cgi

#cp *.cgi
/var/www/cgi-bin/

[root@ragonLaptop cgi]# cd
/var/www/cgi-bin/

[root@ragonLaptop cgi-bin]# ls

query.cgi viewcvs.cgi

복사?는지 확인하고 이제 웹서버로 접속해본다.

http://192.168.0.84/cgi-bin/viewcvs.cgi/

다음과
같은화면이 나오면 성공한 것이다.

viewCVS에는 여러가지 기능들이 있다 그리고 여러가지 세팅들이 있으므로 install 파일을 잘 읽어보고
시도해보기바란다. 참고적으로 cvsgraph 를 연동하는 설치법이잇는데..유용할것같다.

본인은 실력이
부족하고 시간이 부족하여 이부분을 다루지 않앗는데.이글을 읽어보신분들중 설치에 성공하고 또 다른
viewcvs기능을 아시는분은 문서를 자유롭게 수정하시고..제게 메일(Gon77@nate.com)을 한통 보내주면
감사하겟습니다.

개발환경 토론

  • cvs서버는 꼭 가지고 있어야 한다.(이문서를 기준으로 세팅)
  • cvs 사용법을 꼭 숙지해야한다. (이클립스의 cvs사용법문서를 첨부한다.)
  • ide를 꼭 사용하여야할것이다..
  • 개인적으로 이클립스의 사용을 강력추천한다.
  • 마틴파울러의 리팩토링책을 한번씩 꼭 읽기를 권한다.
  • 이클립스의 리팩토링 기능을 사용한다(문서 첨부)
  • 팀원들이 JUnit을 사용할줄 알아야 한다. - 리팩토링시 수정한 코드가같은 결과를 내는지 체크를 해야하므로 꼭 사용해야한다.
  • UML을 이해하는 프로그래머가 필요하다. - eclipseUML을 사용해보기를 추천한다.
  • Pattern을 잘 알고있는 프로그래머가 잇어야한다.
  • 객체지향의 개념은 기본이 되어야 한다.
  • 팀장은 개발상태를 최소한 1주일에 한번씩 마이너 릴리즈를 하도록 해야한다.
  • 최소 한달에 한번은 메이져 릴리즈를 해야한다.
  • 패키지를 해야하는 프로그램이면 installanywhere를 사용하면 좋다.
  • 여러군데 배포를 해야할 상황이면 installanywhere의 powerupdate기능을 사용해라.
  • 프로젝트메니저는 '칭찬은 고래도 춤추게 한다' 라는 책을 읽는다.
  • 팀원들의 아이디어가 팀장에게 직접 올수잇게 한다.그리고 그 아이디어를 이어갈수있고 문서화 할수 잇는 시간과 비용을 주어야 한다.가끔 좋은 아이디어가 사장되는수가 잇었다.지금당장은 시간이 안되서 못하더라도 나중에 꼭 필요할때를 대비하여 문서화를 하여..팀장이 직접 보관하는게 좋을거같다.(간단한 문서여도 좋다.아이디어를 표현만 잘하면되지 굳이 형식적일필요는없을거같다.)
  • 개발 토론을 위하여 white 보드는 항상 ..개발팀에 비치해 놓아야 한다.개발하다 모르는 부분이 잇으면 이곳에 적어두어서 서로서로 의견교환을 통해서 해결해나갈수 잇는분위기를 만들어주는것도 좋을것 같다. 이분에 대해서도 여러가지 토론을 해보고싶다..의견잇으신분들은 언제라도 메일 부탁드립니다.

CVS Grapth Installation

  • rpm을 다운로드 받는다.
  1. wget
    http://www.akhphd.au.dk/~bertho/cvsgraph/release/cvsgraph-1.4.0-1.i386.rpm
  • 설치한다.

[root@localhost viewcvs-0.9.2]# rpm -i cvsgraph-1.4.0-1.i386.rpm

  • 어느경로에 설치되엇는지 확인한다.

[root@localhost viewcvs-0.9.2]#
whereis cvsgraph

cvsgraph: /usr/bin/cvsgraph
/etc/cvsgraph /usr/share/man/man1/cvsgraph.1.gz

  • viewcvs.conf 파일을 편집한다.

vi viewcvs.conf


  1. use_cvsgraph = 0

use_cvsgraph = 1 =< 이부분이 cvsgraph를
사용한다는뜻

#

  1. if the cvsgraph program is not
    on the path, set this value

#

  1. cvsgraph_path
    =

cvsgraph_path = /usr/bin/ =< 위에서 확인한 경로를
넣어준다.

저장하고 빠져나온다.

웹브라우저를 보면 다음과같이 아이콘하나가 추가된것을
볼수잇다.

아이콘을 누르면 다음과같은 그림을 볼 수 있다.

강좌에 대하여

작성자 : [김병용]
작성일 : 2005년 2월 23일

문서이력 :

  • 2005년 2월 23일 김병용 문서 최초 생성
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.