본문 바로가기

TOOL/subversion

SVN install -> Linux 소스컴파일

How to install Subversion on a shared host

 

리눅스에 계정으로 접속하여 아래와 같이 디렉토리를 만든다.

 

cd
mkdir _src
cd _src

 

다음으로 리눅스의 wget 명령어로 subverion 소스를 당겨 받는다.

당혹스럽겠지만 wget은 다음과 같이 치면 된다.

버전은 Subversion 소스 리스트로 부터 선택하면 된다.

Subversion을 build하기 위해서 아울러 모든 독립소스를 포함한 "subversion-deps"도 다운로드 한다.

 

wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz

 

받은 다음 tar를 디렉토리에 푼다.

 

tar -xzvf subversion-1.4.6.tar.gz
tar -xzvf subversion-deps-1.4.6.tar.gz
cd subversion-1.4.6

 

자~ 다음으로 32비트 운영체제인 경우

다음과 같은 두줄로 인스톨이 가능하다.

 

./configure --prefix=$HOME --without-berkeley-db \
     --with-ssl --with-editor=/usr/bin/vim \
     --without-apxs --without-apache
make && make install

 

64비트 (x86_64)에서 이 작업을 한다면 큰 문제를 가지고 있다.

심지어는 종종 듀얼 32비트 (i386/i386)서버에서도 문제를 일으킨다.

arch,

uname -a

또는 cat /proc/cpuinfo

명령으로 확인하도록 하자.

 

그렇다면 64비트 운영체제인 경우에는

같이 다운 받은 Subversion-deps 소스에서 공유된 3가지 라이브러리를

다음과 같이 차근차근 따라하면 된다.

Build할 라이브러리는

apr, apr_util 그리고 neon이다.

명령은

 

cd apr
./configure --enable-shared --prefix=$HOME
make && make install

cd ../apr-util
./configure --enable-shared --prefix=$HOME \
     --with-expat=builtin --with-apr=$HOME \
     --without-berkeley-db
make && make install

cd ../neon
./configure --enable-shared --prefix=$HOME \
     --with-libs=$HOME --with-ssl
make && make install

 

실행후

다음과 같이 subversion 디렉토리에서 실행한다.

--with-ssl flag는 neon에서 build했기때문에 불필요하다.

--without-apxs, --without-apache는 아파치 모듈을 인스톨하기에 앞서 처리한다.

 

cd ../
./configure --prefix=$HOME --without-berkeley-db \
     --with-editor=/usr/bin/vim --with-apr=$HOME \
     --with-apr-util=$HOME --with-neon=$HOME \
     --without-apxs --without-apache
make && make install

 

자~ 이제 인스톨이 되었다.

 

svn --version
svn, version 1.4.6 (r28521)
compiled Jan 29 2008, 11:05:47

 

이제 저장소를 설정하고 SVN을 사용하면 되겠다....

 

Here are some of the errors I saw along the way:
/usr/lib/libexpat.so: could not read symbols: File in wrong format
/usr/lib/libexpat.so: could not read symbols: Invalid operation
/home/joe/_src/subversion-1.4.6/neon/src/.libs/libneon.a: could not read symbols: Bad value

 

이런 문제가 발생한다면 앞서 말했던 64비트 운영체제인 경우 발생할 수 있다.

64비트 설명처럼 3개의 라이브러리를 먼저 설치해보자.

[출처] [Linux] SVN Install|작성자 미르

원문:http://blog.naver.com/kimsjho/140051752939

1. 일단 설치가 필요하겠죠

필요 rpm list

apr-0.9.12-2.i386.rpm

apr-util-0.9.12-1.i386.rpm

subversion-1.4.3-1.i386.rpm 

자~ rpm -ivh *.rpm 해서 설치를 해보세요~ 

2. svn 설치를 확인 해보죠~~

svn --version 

3. 자~ 이제 svn 관리를 위한 계정을 만들어서 관리하기 위해~

adduser svnadmin

passwd svnadmin 

4. svn 에는 저장소가 있어야 겠죠~~ 저장소를 만들어 봐요~~

svnadmin create my-repository 

5. repository 의 환경 설정도 잊지 말아야 겠죠~

cd my-repository/conf 명령으로 이동

vi 에디터로 passwd 및 svnserve.conf 를 수정해 주어야 합니다.

passwd 에는

접근 가능하도록 하는 아이디/ 패스워드를 설정해 줄수 있습니다.

oskm = 1234

형태로 기술해 주면 id 는 oskm pw 는 1234 가 되는 것이죠

 

그리고 svnserve.conf 에서는

초기 파일을 열어 보면

# anon-access = read

# auth-access = write

# password-db = passwd

# realm = My First Repository

라고 된 부분들이 있습니다.

저 부분들을

anon-access = none -> anonymous user 는 아무것도 못하게 하는게 좋겠죠?

auth-access = write  -> 인증 된 사용자에게 쓸 수 있는 권한을 줍니다.

password-db = passwd -> 인증을 위한 passwd 경로를 적어 줍니다. (위에서 설정 했죠?)

realm = oskm repository <- 이건 마음대로 적어주셔도 되요~ 

자 ~ 이제 설정이 모두 끝났습니다~~ ㅎㅎ 

6. 접속을 받을 수 있도록 서버를 띄워야 겠죠?? 

svnserve -d -r ~/my-repository/ 를 실행 합니다~ 

자 이제 접속 가능한지 테스트 해보도록 하죠~ 

7. svn list svn://localhost/my-repository 

인증하라고 메세지가 뜨나요?? 

아까 입력한 id / pw 를 입력하면 접속 성공입니다. 

8. 이제 모든 작업은 끝입니다. 이제 사용을 해봐야 겠죠?? 

svn co svn://localhost/ projects

라고 하면 projects 하면 projects 에 체크아웃이 됩니다. 

9. 익히 알고 계시 듯이 아래 3가지 디렉토리를 추가해 보겠습니다. 

trunk

branches

tags 

svn mkdir trunk branches tags 실행~

하면 아래와 같은 메세지가 출력되며, svn 서버에 반영 하기 위해서는 commit 을 해 주어야 겠죠?

A         trunk
A         branches
A         tags 

svn ci -m "init"  이라고 치면

아래와 같은 메세지가 출력됩니다.

추가          branches
추가          tags
추가          trunk

커밋된 리비전 1. 

10. 이제 자유롭게 commit 하고 checkout 받아 사용 하시면 되겠네요^^~

긴글 읽어주셔서 감사하구요~

svn 설치에 어려움을 겪으시는 분들에게 조금이나마 도움이 되었으면 좋겠네요~

[출처] linux 에서 svn 서버를 구축해 보자~~|작성자 핫핫핫

 


Subversion Home: http://subversion.tigris.org/project_packages.html
참고자료:


 




 

[svn 구조]


사용자





[svn 설치]

먼저 subversion(svn)을 설치하자.

[root]$ yum install subversion

정상적으로 설치되었는지 확인하자.

사용자










[svn 설정 - 필수 설정]

사용자 계정 svn을 생성하고, svn 저장소를 생성하자. 
아래의 경우 저장소(repository는 /svn 이다.

[root]$ mkdir /svn
[root]$ chown -R root:root /svn

그리고 프로젝트폴더를 생성하자. 아래의 경우 프로젝트 이름이 project 가 된다.

[root]$ svnadmin create --fs-type fsfs /svn/project

권한을 설정하자. /svn/project/conf/svnserve.conf 의 주석을 제외한 부분이 아래와 같아야 한다.,
realm 은 리파지토리의 도메인명(외부에서 볼 때의 이름)이라고 할 수 있다.

[general]
anon-access = none
auth-access = write
password-db = passwd
# authz-db = authz
realm = bage
[sasl]
# use-sasl = true
#min-encryption = 0
#max-encryption = 256

계정을 추가하자. /svn/project/conf/passwd 의 내용을 모두 지우고, 아래처럼 입력. 
아래의 경우 id는 bage 이며, 암호는 xxxxx 가 된다.

[users]
bage= xxxxx

* 만약 개인용 서버가 아니라면 sasl을 이용하여 인증하는 방식을 이용하자. 왜냐햐면 passwd 방식(위 방식)은 암호를 누구나 확인할 수 있어서 내 리파지토리에 다른 사람이 접근할 가능성이 높기 때문이다.


[svn 설정 - 리눅스 서비스 등록]

/etc/sysconfig/subversion 을 아래 내용으로 만들자.
OPTIONS="--threads --root /svn"  에서 /svn은 저장소 위치이다.

# Configuration file for the Subversion service 
# 
# To pass additional options (for instace, -r root of directory to # server) to the svnserve binary at startup, set OPTIONS here. 
# 
#OPTIONS= 
OPTIONS="--threads --root /svn"

/etc/init.d/subversion 를 만들자. 
SYSCONFIG= 에 위에서 만든 파일의 경로를 적는다.

#!/bin/bash 
# 
#   /etc/rc.d/init.d/subversion 
# 
# Starts the Subversion Daemon 
# 
# chkconfig: 2345 90 10 
# description: Subversion Daemon

# processname: svnserve

source /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

### Default variables 
SYSCONFIG="/etc/sysconfig/subversion"

### Read configuration 
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0 
prog="svnserve" 
desc="Subversion Daemon"

start() { 
        echo -n $"Starting $desc ($prog): " 
   daemon $prog -d $OPTIONS 
   RETVAL=$? 
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog 
   echo 
}

stop() { 
   echo -n $"Shutting down $desc ($prog): " 
   killproc $prog 
   RETVAL=$? 
   [ $RETVAL -eq 0 ] && success || failure 
   echo 
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog 
   return $RETVAL 
}

case "$1" in 
  start) 
   start 
   ;; 
  stop) 
   stop 
   ;; 
  restart) 
   stop 
   start 
   RETVAL=$? 
   ;; 
  condrestart) 
        [ -e /var/lock/subsys/$prog ] && restart 
   RETVAL=$? 
   ;; 
  *) 
   echo $"Usage: $0 {start|stop|restart|condrestart}" 
   RETVAL=1 
esac

exit $RETVAL

서비스로 등록하자.

[root]$ chmod +x etc/init.d/subversion
[root]$ cd /etc/init.d/
[root]$ chkconfig --add subversion && chkconfig subversion on


[svn 서버 시작(서비스모드)]
서비스를 시작하자.

[root]$ service subversion start


서비스상태와 등록 여부를 확인하자.

사용자


 

[svn 서버 시작(데몬모드)]
[root]$ svnserve -d -r /svn


[svn 접속 테스트]
클라이언트 접속 테스트를 하자.

[참고] 이클립스용 SVN 플러그인 
subversive -> 추천(다음 이클립스에 포함될 예정)
subclipse -> 비추천(버그 많음)

[참고] 윈도우용 SVN 클라이언트
tortoiseSVN -> 추천(svn 폴더관리 및 cleanup에 유용함)



 

[svn 설정- sasl 인증 이용 (접속암호의 암호화)]
암호를 passwd 파일에 저정하는 것은 매우 위험하다.
sasl을 이용하여 암호화 하여 저장하는 방식을 이용해 보자.

/svn/project/conf/svnserve.conf 파일에서 아래 2줄을 찾아 passwd 부분은 주석을 sasl부분은 true로 변경하자.
[general]
anon-access = none
auth-access = write
# password-db = passwd
# authz-db = authz
realm = bages
[sasl]
use-sasl = true
#min-encryption = 0
#max-encryption = 256


sasldb에 계정을 추가해야 한다. 위와 같은 경우 아래처럼 한다.
도메인이 bages 에 소속되는 계정 bage을 생성하는 명령이다.
( 만약 아래 명령이 없다고 나오면, "yum install cyrus-sasl*" 명령을 통하여 관련 패키지를 먼저 설치하자.)

[root]$ saslpasswd2 -c -u bages bage
[root]$ sasldblistusers2
tomcat@tomcats: userPasswd


확실히 하기 위해 passwd 파일을 아예 지워버리자.
앞으로는 sasldb를 이용하므로. ^^

[root]$ rm -f /svn/project/conf/passwd


이제 서버 관리자도 암호를 확인할 수 없다.
마음 편하게 svn을 사용하자.