1. Subversion 을 설치해보자
이재홍님이 작성하신 Subversion 사용법(http://www.pyrasis.com/main/Subversion-HOWTO)에 나온 내용과 AnNyung Linux 1.2R3에 Subversion 1.3.1 설치(http://blog.naver.com/nolimit_gc/90003599559) 내용을 참고하여 내 리눅스 서버에 Subversion을 설치할려고 했다.
Subversion을 설치할려면 몇가지 관련 패키지를 설치해야하는데 아래와 같이 의존성 문제로 설치를 할 수 없는 것이 아닌가? 나처럼 리눅스 초자가 이런문제를 금방해결하는 것은 거의 불가능해보였다.
# rpm -ivh apr-0.9.12-1.i386.rpm
오류: 의존성 문제로 인해 실패함:
libc.so.6(GLIBC_2.3) (은)는 apr-0.9.12-1 에서 필요로 합니다
libpthread.so.0(GLIBC_2.3.2) (은)는 apr-0.9.12-1 에서 필요로 합니다# rpm -ivh apr-devel-0.9.12-1.i386.rpm
오류: 의존성 문제로 인해 실패함:
apr = 0.9.12-1 (은)는 apr-devel-0.9.12-1 에서 필요로 합니다
gcc = 3.2.2 (은)는 apr-devel-0.9.12-1 에서 필요로 합니다# rpm -ivh apr-util-0.9.12-1.i386.rpm
오류: 의존성 문제로 인해 실패함:
libapr-0.so.0 (은)는 apr-util-0.9.12-1 에서 필요로 합니다
libc.so.6(GLIBC_2.3) (은)는 apr-util-0.9.12-1 에서 필요로 합니다
libdb-4.0.so (은)는 apr-util-0.9.12-1 에서 필요로 합니다
liblber.so.2 (은)는 apr-util-0.9.12-1 에서 필요로 합니다
libldap.so.2 (은)는 apr-util-0.9.12-1 에서 필요로 합니다
위 내용에 빨간색 처리된 부분은 리눅스 커널 버전이 낮기 때문에 생기는 의존성 오류이다. 후반에 한번더 자세히 언급하겠지만 이러한 경우에는 해당 source rpm을 다운받아 시스템에 맞게 build하는 방법을 택하거나 또는 커널을 업데이트 해야한다.
그런데 내 서버는 안녕리눅스가 운영체제이다. 안녕리눅스이기 때문에 위에서 설명한 것 처럼 어렵게 설치할 필요가 없다는 것을 알았다. 김정균님이 만든 안녕리눅스(http://annyung.oops.org/)에서는 자동으로 패키지를 추가하거나 업데이트가 가능하게 만들어져 있다. 하지만 subversion도 제공하리라고는 상상도 못했다 ㅡㅡ;;;
난 다음 두 줄 명령어로 subversion 설치를 완료했다.
# pkgsysupdate
# pkgadd subversion
subversion :
==> 의존성 패키지 neon 성공
==> 의존성 패키지 apr 성공
==> 의존성 패키지 db4 성공
==> 의존성 패키지 apr-util 성공
==> subversion Install 성공
으아아아~~~ 이거 너무 좋은거 아니여? 리눅스 공부하는 사람들에게는 오히려 이렇게 자동화 처리된 것이 쥐약일 수 있겠지만 나처럼 리눅스하고 그리 친하지 않은 사람에게는 좋은 것 같다. 3~4시간을 끙끙 대면서 별짓을 다해도 안되는데… 단 2줄로 설치되다니.. 훗~
참고로 이런 의존성 문제가 발생할 경우에는 Source RPM을 다운로드 받아서 rpm을 시스템에 맞게 build를 해서 하면 아까와 같은 문제를 해결할 수 있다고 한다(박우람씨 Thanks)
아래는 mirror.oops.org에서 제공하는 subversion의 Source RPM을 FTP로 받아서 rpm을 build하는 예이다.
# ncftp mirror.oops.org
# cd pub/AnNyung/1.0/SRPMS/SRPMS/
# get subversion-1.1.4-2.src.rpm
# exit# rpmbuild –rebuild –target i686 subversion-1.1.4-2.src.rpm
# cd /usr/src/annyung/RPMS/i686/이처럼 의존성 에러가 날때 내 시스템에 맞추어 RPM을 제작하기 위해 rpmbuild를 사용한다. 성공하면 안녕리눅스의 경우 /usr/src/annyung/RPMS/i686/에 rpm이 만들어져 있다. redhat인 경우는 /usr/src/redhat/RPMS/i686/일 거다.
만약 의존성을 check안하고 rpm build할려면 rpmbuild -nodeps 옵션을 추가하면 된다.
그럼 SVN을 구동해볼까나?
2. Subversion을 사용해보자
여기서는 안녕리눅스와는 상관없는 내용이다. 모든 Linux에 적용될 수 있는 이야기 이다.
더욱 자세한 사항은 http://www.pyrasis.com/main/Subversion-HOWTO 를 참고한다.
2-1 저장소를 만들어보고 svnserve를 이용한 서버 구동 테스트
난 Apache로 말고 순수하게 svn:// 로 접속해서 사용할 수 있도록 만들고자 한다. svn://을 사용하면 Apache를 사용할때보다 더욱 빠르다고 한다.
먼저 SVN을 사용하기 위해서 저장소(Repository)를 만들어야 한다. 이 저장소는 프로젝트마다 하나씩 필요할 것이다. 난 /home/svn/에 저장소 root를 잡을려고 한다.
#mkdir /home/svn
그런 다음 만든 svn폴더로 가서 파일 시스템(버클리 DB를 사용할 수도 있다.)을 이용한 sample이라는 이름으로 저장소를 만든다.
#cd /home/svn
#svnadmin create –fs-type fsfs sample
/home/svn/sample/ 로 가서 ls를 하면 관련 파일들이 있으며 여기 있는 파일을 임의로 수정하게 되면 데이타를 다 잃어버릴 수도 있으니 주의하기 바란다.
이제 SVN을 실행한다. 실행하면 3690 포트가 열린다.
#svnserve -d -r /home/svn
테스트 하기 위해
#svn checkout svn://(서버 IP또는 도메인)/sample
checked out revision 0. 이 나오면 제대로 설정한 것이다. 현재상태는 누구나(Anonymous) 저장소에 접근해서 체크아웃, 커밋이 가능하다.
2-2 Svnserve에서 ID로 인증하기
Subversion 0.33.0 이후로 ID로 사용자 인증이 가능하게 되었다. 그래서 아까 만들어 놓은 저장소안에 /home/svn/sample/conf/svnserve.conf 파일을 찾아서 설정만 해주면 된다.
#vi /home/svn/sample/conf/svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)### Visit http://subversion.tigris.org/ for more information.[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are “write”, “read”,
### and “none”. The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file’s location is relative to the conf directory.
### The format of the password database is similar to this file.
### It contains one section labelled [users]. The name and
### password for each user follow, one account per line. The
### format is
### USERNAME = PASSWORD
### Please note that both the user name and password are case
### sensitive. There is no default for the password file.
password-db = passwd
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository’s uuid.
realm = jidolstar’s Repository
위와 같이 설정하면 anon-access=none에 의해 아무나 read를 못하게 막는다. 만약 이부분이 read라면 아무나 들어와 읽을 수 있다. 그리고 auth-access=write는 ID로 인증된 사람만 쓰기 권한을 주게 된다.
password-db = passwd는 /home/svn/sample/conf/ 아래에 passwd 이름으로 ID를 만들 수 있다.
이것은 다음과 같이 만든다.
#vi /home/svn/sample/conf/passwd
[users]
sampleuser = password1234
설정이 완료되고 svn checkout svn://(사용자 도메인)/sample 으로 접속하면 ID와 비밀번호를 입력하여 성공하면 “checked out revision 0” 이 나온다.
여기서 잠깐!!!
외부에서 우리가 설치한 SVN에 접근하기 위해서는 반드시 3690 포트가 열려 있어야 한다.3690 포트가 열려있는지 확인하기 위해 다음과 같이 확인해보자
# nmap localhost -p1-9999
….(생략)
3690/tcp open unknown
….(생략)
Nmap run completed — 1 IP address (1 host up) scanned in 1.165 seconds3690 포트가 없다면 방화벽을 의심해본다.
# vi /etc/oops-firewall/filter.conf
에서 TCP_ALLOWPORT에 3690을 추가한다.
그리고 firewall을 다시 실행한다.# service oops-firewall restart
2-3 윈도우에서 Linux SVN Server에 접속하고 사용해보자
Linux에서 SVN 서버를 구축했다.
자신이 Linux에 SVN을 설치할 수 없어도 윈도우 상에서도 설치가 가능하다. 하지만 지금 주제와는 상관없는 이야기고, 일단 Linux에 SVN을 설치했으니 윈도우에서 접속해서 사용해보도록 한다.
먼저 윈도우에서 SVN을 사용할 수 있도록 TortoiseSVN을 설치해야한다.
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
에 가면 쉽게 다운로드 받을 수 있다. 현재(2007-06-06) svn-1.4.3-setup.exe가 최신버전이다.
설치완료후 폴더를 하나 만들고 아래 그림과 같이 폴더를 선택후 오른쪽마우스를 선택하면 SVN 체크아웃이 나온다.
체크아웃하고 아래와 같은 방법으로 저장소 URL을 입력한다. 그리고 확인 버튼을 누른다.
성공하면 아래와 같이 완료된다.
위에서 리비전:0이 나온것은 앞서 설명한 Linux SVN을 설치하고 만든 저장소가 최초의 것이기 때문이다. 앞으로 계속 커밋(commit)이 수행될 때 마다 리비전은 계속 증가한다.
그럼 커밋(commit)을 수행해보자.
만든 폴더에 branches, tags, trunk 폴더(폴더에 대한 자세한 설명은 http://blog.naver.com/hbesthee/20031075569 를 참고)를 만든다.
그리고 아래 그림과 같이 TortoiseSVN에서 “+추가”를 선택한다.
그럼 메시지를 적는 란과 변경된 파일명이 뜬다. 메시지에는 변경되는 파일명에 대해 자세히 기록을 남긴다.
메시지를 적은뒤 확인을 누르면 사용자명과 암호를 입력하는 란이 나온다. 앞서 안녕리눅스에 SVN을 설치할 때 인증과정을 거치기 위해 conf설정에 대해 언급했다.
정상적으로 인증과정을 거치면 아래와 같은 화면이 나오고, 리비전이 0에서 1로 바뀐다.
더 자세한 설명을 다루기에는 너무 분량이 많으므로 SVN에 대해서는 책을 따로 구입해서 공부해보는 것도 좋을 듯하다.
참고로 구글에서 제공하는 FlexLib를 가지고 SVN 접속을 시도해보자.
http://code.google.com/p/flexlib/
에 가면 Flex 오픈소스 Lib가 있다.이곳에서는 오픈소스 버전관리를 SVN으로 하고 있다. SVN접속 주소는 다음과 같다.
http://flexlib.googlecode.com/svn/
프로토콜이 http로 되어있는데 SVN은 svn:// 대신해 http://도 사용할 수 있고 http를 사용하면 웹에서도 볼 수 있다. 앞서 Linux에서 http를 제공하려면 apache2 이상 설치되어 있어야한다. 설치 방법은 http://www.pyrasis.com/main/Subversion-HOWTO 에 자세히 나와있다.그럼 우리가 flexlib를 사용하기 위해 위 주소로 접속해보길 바란다.
또는 SVN에서 checkout하면 아래와 같은 폴더가 보인다.폴더에 대해 잘 모르겠다면
SVN에서 자주 사용되는 용어를 소개한
http://blog.naver.com/hbesthee/20031075569
를 참고하길 바란다. 간략하게 잘 나와 있다.
3. 참고사이트
Subversion How to : http://www.pyrasis.com/main/Subversion-HOWTO
SVN 다운로드 : http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
안녕리눅스 : http://annyung.oops.org/
구글 Flex 오픈 Lib : http://code.google.com/p/flexlib/
SVN에서 자주 사용되는 용어 : http://blog.naver.com/hbesthee/20031075569
FlexBulder에서 Subversion 사용해보기 : http://blog.jidolstar.com/78
4. 정리하기
이상으로 안녕리눅스에서 Subversion을 설치하고 윈도우에서 접속하는 법을 알아보았다.
나도 직접 하나씩 해보면서 이 글을 쓰면서 해보았다. 처음 해보는 것이라 삽질을 많이 했지만
노력끝에 열매는 달콤하다.
이 글이 SVN을 사용하고자 하는 사람들에게 도움이 되길 바란다.