Program/Linux

subversion(svn) 리눅스 설치

나이트로 2007. 12. 20. 11:20
Embedded 커널 개발시 드라이버 추가 및 수정은 가지처럼 엮어진 여러 파일들을 수정하면서 이루어진다.  수정되는 양이 많다 보니 각 단계별 패치파일을 생성하기에도 양이 많고 쉽게 알아보기 힘들다. 하지만 버전관리를 통해 어느파일의 어느부분이 수정되었는지 쉽게 알수 있고 오류가 발생하였을 때 역추적도 쉬워진다.  

보안설정을 통해 소스 관리에 보존을 강화하며 웹인터페이스인 Viewvc를 활용해서 웹을 통해 열람시 보기 쉽고 수정사항등을 쉽게 찾아볼수 있다.

1. Subversion 개요
 
     (1) SVN이란?
            • Subversion 은 소프트웨어 버전 관리 시스템이다.
            CVS이후에 나왔으며 바이너리 까지 버전관리 할수 있는 장점이 있다.
     (2) 버전 관리 시스템 장점
            개발 버전과 릴리즈 버전을 섞이지 않고 쉽게 관리
            소스를 잘 못 수정했더라도 기록이 남고 되돌리기가 쉽다.
            수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽다.
            개발자들이 따로 백업을 하지 않아도 된다.
     (3) 버전 관리 시스템의 종류
            CVS(Concurrent Version System) : 가장 오래된 버전관리 시스템
            Subversion : CVS의 간점을 개선하고 CVS를 대체할 목적으로 개발
            Visual Sourcesafe : 윈도우 기반 소프트웨어 버전관리 툴 (상용)
            Clear Case : Rational사에서 만든 버전관리 시스템 (상용)
            BitKeeper : 리눅스 커널개발시 사용하는 버전관리 시스템 (상용)
     (4) 버전 관리 시스템의 용어 정리
            리포지토리(Repository/ 저장소) : 관리되는 소스와 변경사항등이 저장되는곳
            체크아웃(Check out) : 저장소에서 소스를 받아오는것
            커밋 (Commit) : 체크아웃 한 소스를 수정, 추가 한 후 저장소에 저장하여 갱신
            리비전 (Revision) : 수정사항이 증가할때 마다 숫자가 증가하며 프로젝트의 진행 상황을 알수 있다.
            임포트 (import) : 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업
            익스포트(Export) : 체크아웃과 달리 버전관리 파일들을 제외한 순수한 파일을 받아올수 있다.
    (5) Embedded 개발시 장점
            Embedded 커널 개발시 드라이버 추가 및 수정은 가지처럼 엮어진 여러 파일들을 수정하면서 이루 어진다.
           수정되는
양이 많다 보니 각 단계별 패치파일을 생성하기에도 양이 많고 쉽게 알아보기 힘들다.
           하지만 버전  관리를 통해 어느
파일의 어느부분이 수정되었는지 쉽게 알수 있고 오류가 발생하였을 때 역추적도
           쉬워진다.
            관리대상인 소스파일들이 SVN 서버 저장소에 저장되기 때문에 다른 개발환경에서도 작업중인 소스를 다운로드 
              
고 수정한 부분을 커밋할 수가 있다.
            여러명이 각 모듈 별로 드라이버 작업을 할 경우 작업내용은 저장소에 모두 반영되기 때문에 추후 머징작업시
              시간을
단축할 수 있다.
            윈도우에서 작업을 하든 리눅스에서 작업을 하든 큰 문제없이 사용할수 있으며 웹브라우저를 통해 소스파일을
              검색
할수 있기 때문에 쉽게 접근할수 있다.
            릴리즈 후 최종 소스에 대한 자료관리도 쉽게 할 수 있다.


2. Subversion 설치
 
Subversion은 최신 리눅스 패키지에 포함이 되어있기도 하나. 여기서는 redhat 9.0 기준으로 소스컴파일을 통해 구축하는 방법을 소개한다. 패키지로 설치되어 있을경우 설정파일의 위치가 다를뿐 사용하는 방법은 같다.
 
     (1) 소스파일 다운로드
            Subversion 소스파일은 http://subversion.tigris.org/ 에서 subversion-1.4.3.tar.bz2파일을 받는다.
            Subversion 의존성 라이브러리(subversion-deps-1.4.3.tar.bz2)도 다운 받는다.
            Apache 2.0 이상 버전을 받는다. http://httpd.apache.org/ 에서 httpd-2.2.4.tar.gz 파일을 받는다.
            저장소를 Berkeley DB를 사용하고 할때는 Berkeley DB도 설치해야 한다.
              http://www.oracle.com/technology/software/products/berkeley-db/db/index.html 에서
              4.5.20.tar.gz를 받는다
            openssl http://www.openssl.org/source/ 에서 openssl-0.9.8e.tar.gz  을 받는다.
     (2) 소스 컴파일
            openssl 컴파일
              [root@hybus SRC]# tar xvzf openssl-0.9.8d.tar.tar
              [root@hybus SRC]# cd openssl-0.9.8d
              [root@hybus openssl-0.9.8d]# ./config
              [root@hybus openssl-0.9.8d]# make
              [root@hybus openssl-0.9.8d]# make install
            Berkeley DB 컴파일
              [root@hybus SRC]# tar xvzf db-4.5.20.tar.tar
              [root@hybus SRC]# cd db-4.5.20
              [root@hybus db-4.5.20]# cd db-4.5.20
              [root@hybus db-4.5.20]# cd build_unix
              [root@hybus build_unix]# ../dist/configure
              [root@hybus build_unix]# make
              [root@hybus build_unix]# make install

           
 
설치하면 /usr/local/BerkelyDB4.5 디렉토리가 생긴다.
              vi /etc/ld.so.conf로 경로를 추가해준다.
사용자 삽입 이미지


              추가 해주었으면 ldconfig로 설정을 적용한다.
              [root@hybus build_unix]# ldconfig

            Apache2 컴파일
              [root@hybus SRC]# tar xvzf httpd-2.2.4.tar.gz
              [root@hybus SRC]# cd httpd-2.2.4
              설정이 길기 때문에 스크립트를 만들어서 설정한다.
              [root@hybus SRC]# vi apache_conf

사용자 삽입 이미지


              [root@hybus SRC]# chmod +x apache_conf
              [root@hybus SRC]# ./apache_conf
              [root@hybus SRC]# make
              [root@hybus SRC]# make install
            Subversion 컴파일
              [root@hybus SRC]# tar xvjf subversion-1.4.3.tar.bz2
              [root@hybus SRC]# tar xvjf subversion-deps-1.4.3.tar.bz2
              설정이 길기 때문에 스크립트를 만들어서 설정한다.
              [root@hybus SRC]# vi subver_conf

사용자 삽입 이미지
          [root@hybus SRC]# chmod +x subver_conf
              [root@hybus SRC]# ./subvert_conf
              [root@hybus SRC]# make
              [root@hybus SRC]# make install

 
3. Subversion 사용하기
     (1) 저장소 만들기
            저장소 생성
              버클리 DB를 이용하거나 파일시스템을 이용한 저장소 둘중에 하나를 택하여 생성할수 있다.
              저장되는 형태는 다르나 사용하는 방법은 같다.
              # mkdir /home/svn
              # cd /home/svn/ /home/svn
              # svnadmin create --fs-type fsfs sample (파일시스템을 이용한 저장소)
              # svnadmin create --fs-type  bdb sample (버클리 DB를 이용한 저장소)
            저장소 그룹 권한설정
              # chmod -R g+w sample
            Apache 설정
              #cd /home/svn /home/svn
              # chown -R nobody.nobody sample (apache의 접근권한은 각 패키지마다 다를수 있으므로 확인 후 지정)
            /usr/local/apach2/conf/httpd.conf 수정
              <Location /svn/sample>
              DAV svn SVNPath
              /home/svn/sample
              </Location>
            확인
              웹 접속 http://125.7.203.253/svn/sample 또는 #svn checkout   
              http://125.7.203.253/svn/sample sample
     (2) 에디터 설정
            subversion에서 사용할 기본적인 에디터 지정
            지정하지 않으면 커밋등을 할수 없게 된다.
            .bash_profile등에 추가
              SVN_EDITOR=/usr/bin/vim
              export SVN_EDITOR
     (3) 디렉토리 만들기
            # svn mkdir svn://125.7.203.253/sample/trunk
              vi가 실행되면 :q!로 빠져나간다.
            Log message unchanged or not specified
              a)bort, c)ontinue, e)dit, C를 누르고 엔터를 누르면 Committed revision 1. 메세지가 나온다.
            메시지가 나오지 않으면 계정관리및 디렉토리 권한 설정을 다시 확인한다
     (4) Import
            저장소에 소스를 넣는다
              파일이나 디렉토리명을 import 다음에 넣어준다 디렉토리일 경우 디렉토리 하위 내용부터 추가된다.
              # svn import sampledir http://125.7.203.203/svn/sample/trunk
            확인
              # svn list http://125.7.203.203/svn/sample/trunk
     (5) Checkout
            저장소에 소스를 download한다. co로 줄여서 사용할수 있다.
              # svn checkout http://125.7.203.203/svn/sample/trunk sample
              방금 위에서 trunk에 import한 내용을 sample이란 디렉토리로 download한다.
              이 sample이란 디렉토리에서 이제 소스를 수정하고 작업하고 commit하면서 관리를 한다.
            checkout한 디렉토리에는 .svn이란 디렉토리가 있다 저장소 정보가 있기 때문에 지우면 안된다.
     (6) Commit
            check out해서 받은 소스를 수정하고 갱신한다. .svn이 있는 즉 저장소 정보가 있는 곳에서 커밋을 해야
              적용된다.
               # svn ci
    (7) Diff
            리비전 된 내용들을 비교해서 볼 수 있다.

           

4. Subversion 보안설정

 
     (1) apache 사용자 인증
 
            아파치에 사용될 패스워드 파일을 만든다.

사용자 삽입 이미지

 
            최초에 패스워드 파일을 만들때는 c 옵션을 붙이고 추후에 사용자 추가때는 c 옵션을 빼고 추가하면 된다.

사용자 삽입 이미지

 
            http.conf 파일에서 서브버전 location설정에 다음을 추가한다.

사용자 삽입 이미지

 
위에서 생성된 passwd파일에서 생성된 사용자와 비밀번호로 로그인 한 사람만 열람 및 읽기쓰기가 가능한 옵션이다.
만일 읽기는 모두에게 가능하고 커밋만 사용자만 가능하게 설정한다면 다음과 같이 수정한다.


 

사용자 삽입 이미지

 

5. ViewVC 연동하기
 
(1) Viewvc란?
 
Viewvc는 CVS에서 사용하였던 웹 인터페이스이다. 웹에서 소스를 비교하고 열람하는데 상당히
  유용하다. 파이썬 기반으로 동작되며 http://www.viewvc.org에서 자료를 받을수 있다.
 
(2) Viewvc 설치
 
 파이선 설치
  레드햇9.0 기준으로 설명을 하면 mod_python이 기본적으로 설치가 되어 있지 않다.
  따라서 래드햇 홈페이지에서 몇가지 rpm을 설치해야 한다.
  mod_python-3.0.3-3.i386.rpm
  swig-1.3.25-1.i386.rpm
 의존성의 패키지를 설치가 끝났다면 viewvc를 설치한다. 1.0.3 버전을 다운 받고 ./viewvc-install 을 실행하면 경로를 물어보는 커맨드가 나온다. 각 경로에 맞게 설정해주면 설치가 된다.


 

사용자 삽입 이미지
 
(3) Viewvc 설정
 
 /usr/local/viewvc-1.0.3에 설치가 되었다. viewvc.conf을 수정한다. 다음과 같은 부분을 찾아서 수정한다.

  저장소의 경로를 정한다. cvs_roots는 주석처리한다.
  svn_roots = svn: /home3/svn/PROJECT
  default_root = svn
  rcs_path = /usr/bin 는 주석을 해제한다.
  mime_types_file = /usr/local/apache2/conf/mime.types 은 주석을 해제한다.
  use_enscript = 1
  enscript_path = /usr/bin/
  php_exe_path = /usr/bin/php
  allow_tar = 1
  use_re_search = 1
 
 /usr/local/apache2/conf에 설치가 되었다. Httpd.conf파일에서 cgi 부분을 수정한다.


 

사용자 삽입 이미지
 
 /usr/local/viewvc-1.0.3/bin/cgi 에 있는 query.cgi  viewvc.cgi 파일을 /usr/local/apache2
  /cgi-bin에 복사한다.
 아파치를 재시작 한다.
  /usr/local/apache2/bin/apachectl restart

  http://125.7.203.253/cgi-bin/viewvc.cgi/로 접속하면 vicwvc로 파워업된 svn을 볼수있다.
  125.7.203.253은 아파치 서버와 svn서버가 동작되고 있는 ip이다.
 

사용자 삽입 이미지


사용자 삽입 이미지


 

사용자 삽입 이미지

'Program > Linux' 카테고리의 다른 글

Linux 에서 apache , resin 연동  (0) 2008.05.19
리눅스 페도라 에서 마우스 커서가 안보일때  (0) 2008.05.19
리눅스 기본 팁  (0) 2007.06.14
아파치 튜닝3  (0) 2007.06.14
아파치튜닝2  (0) 2007.06.14