본문 바로가기
구 블로그 보관처

LINUX - SVN 설치 및 사용법 정리

by 행복한 만수킴 2020. 5. 17.

  

  • ​설치 확인
    • svn
    • svn -version
    • rpm -qa | grep subversion
    • yum list installed | grep subversion
    • 실행 화면

       

        1 [root@centos ~]# svn
        2 -bash: svn: command not found
        3
        4 [root@centos ~]# svn -version
        5 -bash: svn: command not found
        6
        7 [root@centos ~]# rpm -qa | grep subversion
        8 [root@centos ~]
        9
       10 [root@centos ~]# yum list installed | grep subversion
       11 [root@centos ~]

       

       


  • 설치
    • yum을 이용하여 설치
    • yum list 확인 : yum list subversion
    • yum install 설치 : yum install subversion

       

        1 [root@centos ~]# yum list subversion
        2 Loaded plugins: fastestmirror
        3 Loading mirror speeds from cached hostfile
        4 Excluding mirror: data.nicehosting.co.kr
        5  * base: centos.mirror.cdnetworks.com
        6  * epel: mirror.premi.st
        7 Excluding mirror: data.nicehosting.co.kr
        8  * extras: centos.mirror.cdnetworks.com
        9  * rpmforge: ftp.kddilabs.jp
       10  * updates: centos.mirror.cdnetworks.com
       11 Available Packages
       12 subversion.i686      1.6.11-10.el6_5                       updates
       13 subversion.x86_64    1.6.11-10.el6_5                       updates
       14 [root@centos ~]
       15
       16 [root@centos ~]# yum install subversion
       17 Loaded plugins: fastestmirror
       18 Loading mirror speeds from cached hostfile
       19 Excluding mirror: data.nicehosting.co.kr
       20  * base: centos.mirror.cdnetworks.com
       21  * epel: mirror.premi.st
       22 Excluding mirror: data.nicehosting.co.kr
       23  * extras: centos.mirror.cdnetworks.com
       24  * rpmforge: ftp.kddilabs.jp
       25  * updates: centos.mirror.cdnetworks.com
       26 Setting up Install Process
       27 Resolving Dependencies
       28 --> Running transaction check
       29 ---> Package subversion.x86_64 0:1.6.11-10.el6_5 will be installed
       30 --> Processing Dependency: perl(URI) >= 1.17 for package: subversion-1.6.11-10.el6_5.x86_64
       31 --> Processing Dependency: libneon.so.27()(64bit) for package: subversion-1.6.11-10.el6_5.x86_64
       32 --> Running transaction check
       33 ---> Package neon.x86_64 0:0.29.3-3.el6_4 will be installed
       34 --> Processing Dependency: libpakchois.so.0()(64bit) for package: neon-0.29.3-3.el6_4.x86_64
       35 ---> Package perl-URI.noarch 0:1.40-2.el6 will be installed
       36 --> Running transaction check
       37 ---> Package pakchois.x86_64 0:0.4-3.2.el6 will be installed
       38 --> Finished Dependency Resolution
       39
       40 Dependencies Resolved
       41
       42 ===================================================================================  
       43  Package          Arch             Version                  Repository         Size
       44 ====================================================================================
       45 Installing:
       46  subversion       x86_64                1.6.11-10.el6_5  updates           2.3 M
       47 Installing for dependencies:
       48  neon             x86_64                0.29.3-3.el6_4   base              119 k
       49  pakchois         x86_64                0.4-3.2.el6      base              21 k
       50  perl-URI         noarch                1.40-2.el6       base              117 k
       51
       52 Transaction Summary
       53 =====================================================================================
       54 Install       4 Package(s)
       55
       56 Total download size: 2.5 M
       57 Installed size: 12 M
       58 Is this ok [y/N]: y
       59 Downloading Packages:
       60 (1/4): neon-0.29.3-3.el6_4.x86_64.rpm                    | 119 kB     00:00     
       61 (2/4): pakchois-0.4-3.2.el6.x86_64.rpm                   |  21 kB     00:00     
       62 (3/4): perl-URI-1.40-2.el6.noarch.rpm                    | 117 kB     00:00     
       63 (4/4): subversion-1.6.11-10.el6_5.x86_64.rpm             | 2.3 MB     00:00     
       64 -------------------------------------------------------------------------------------
       65 Total                                            8.6 MB/s | 2.5 MB     00:00     
       66 Running rpm_check_debug
       67 Running Transaction Test
       68 Transaction Test Succeeded
       69 Running Transaction
       70   Installing : pakchois-0.4-3.2.el6.x86_64                                    1/4 
       71   Installing : neon-0.29.3-3.el6_4.x86_64                                     2/4 
       72   Installing : perl-URI-1.40-2.el6.noarch                                     3/4 
       73   Installing : subversion-1.6.11-10.el6_5.x86_64                              4/4 
       74   Verifying  : perl-URI-1.40-2.el6.noarch                                     1/4 
       75   Verifying  : pakchois-0.4-3.2.el6.x86_64                                    2/4 
       76   Verifying  : subversion-1.6.11-10.el6_5.x86_64                              3/4 
       77   Verifying  : neon-0.29.3-3.el6_4.x86_64                                     4/4 
       78
       79 Installed:
       80   subversion.x86_64 0:1.6.11-10.el6_5                                             
       81
       82 Dependency Installed:
       83   neon.x86_64 0:0.29.3-3.el6_4 pakchois.x86_64 0:0.4-3.2.el6 perl-URI.noarch 0:1.40-2.el6       
       84
       85 Complete!

       


  • 정상 설치 확인
    • 상단 설치 확인과 같은 방식으로 진행
        1 [root@centos ~]# svn
        2 사용법은 'svn help'를 통해 볼 수 있습니다.
        3
        4 [root@centos ~]# svn --version
        5 svn, 버젼 1.6.11 (r934486)
        6     Mar  6 201410:49:10에 컴파일 됨
        7
        8 Copyright (C) 2000-2009 CollabNet.
        9 Subversion is open source software, see http://subversion.tigris.org/
       10 This product includes software developed by CollabNet (http://www.Collab.Net/).
       11
       12 저장소(repository) 접근 모듈(RA) 목록:
       13
       14 * ra_neon : Neon을 이용하여 WebDAV 프로토콜을 통해 저장소에 접근하는 모듈
       15   - 'http' 스키마를 처리합니다.
       16   - 'https' 스키마를 처리합니다.
       17 * ra_svn : svn 네트워크 프로토콜을 사용하여 저장소에 접근하는 모듈
       18   - Cyrus SASL 인증 이용
       19   - 'svn' 스키마를 처리합니다.
       20 * ra_local : 로컬 디스크에 있는 저장소를 접근하기 위한 모듈
       21   - 'file' 스키마를 처리합니다.
       22
       23 [root@centos ~]# rpm -qa | grep subversion
       24 subversion-1.6.11-10.el6_5.x86_64
       25
       26 [root@centos ~]# yum list installed subversion
       27 Loaded plugins: fastestmirror
       28 Loading mirror speeds from cached hostfile
       29 Excluding mirror: data.nicehosting.co.kr
       30  * base: centos.mirror.cdnetworks.com
       31  * epel: mirror.premi.st
       32 Excluding mirror: data.nicehosting.co.kr
       33  * extras: centos.mirror.cdnetworks.com
       34  * rpmforge: ftp.kddilabs.jp
       35  * updates: centos.mirror.cdnetworks.com
       36 Installed Packages
       37 subversion.x86_64         1.6.11-10.el6_5              @updates
       38 [root@centos ~]

       


 

 

  • Repository(저장소) 생성
    • SVN에 올리는 데이타들이 저장이 되어야 할 디렉토리를 만듦.
    • 나의 경우, 향후 데이타 관리를 위해 별도의 파티션 "/data"를 미리 만들어두고 사용함.
    • SVN 디렉토리 생성 : mkdir /data/svn
    • 권한 변경 : chown -R root:root /data/svn  또는  chmod -R g+w /data/svn
    • 생성 디렉토리 확인 : ls -l /data
    • 실제 SVN 프로젝트 생성 : svnadmin create --fs-type fsfs /data/svn/test_repo

       

        1 [root@centos ~]# mkdir /data/svn
        2 [root@centos ~]
        3
        4 [root@centos ~]# chown -R root:root /data/svn
        5 [root@centos ~]
        6 [root@centos ~]# chmod -R g+w /data/svn
        7 [root@centos ~]
        8
        9 [root@centos ~]# ls -l /data
       10 합계 28
       11 drwx------. 2 root root 16384 2014-04-07 14:28 lost+found
       12 drwxr-xr-x  2 root root  4096 2014-04-17 14:28 svn
       13 drwxr-xr-x  2 root root  4096 2014-04-08 19:18 xxxxx
       14 drwxr-xr-x  3 root root  4096 2014-04-08 19:19 yyyyy
       15
       16 [root@centos ~]# svnadmin create --fs-type fsfs /data/svn/test_repo
       17 [root@centos ~]
       18
       19 [root@centos ~]# ls -l  /data/svn
       20 합계 4
       21 drwxr-xr-x 6 root root 4096 2014-04-17 14:37 test_repo

       


  • svnserve 서비스 데몬 만들기
    • yum으로 설치시 "/etc/sysconfig/svnserve" 파일이 안만들어진다고 함.
    • 위 파일을 생성하여 "service svnserve start/status/stop" 명령을 사용할 수 있다고 함.
    • 파일 생성 : echo 'OPTIONS="--threads --root /data/svn > /etc/sysconfig/svnserve
    • 생성 확인 : ls -al /etc/sysconfig/svnserve  또는 cat /etc/sysconfig/svnserve

         1 [root@centos ~]# ls /etc/sysconfig/svnserve

        2 ls: cannot access /etc/sysconfig/svnserve: 그런 파일이나 디렉터리가 없습니다
        3 [root@centos ~]
        4
        5 [root@centos ~]# echo 'OPTIONS="--thread --root /data/svn"' > /etc/sysconfig/svnserve
        6 [root@centos ~]
        7
        8 [root@centos ~]# cat /etc/sysconfig/svnserve
        9 OPTIONS="--thread --root /data/svn"
       10 [root@centos ~]

       


  • 저장소 환경파일 수정 (svnserve.conf 설정)
    • 설정 파일 원본을 따로 복사하여 보관함.
    • vi를 이용하여 환경 파일 내용 새로 작성

       

        1 [root@centos ~]# ll /data/svn/test_repo
        2 합계 24
        3 -rw-r--r-- 1 root root  229 2014-04-17 14:37 README.txt
        4 drwxr-xr-x 2 root root 4096 2014-04-17 14:37 conf
        5 drwxr-sr-x 6 root root 4096 2014-04-17 14:37 db
        6 -r--r--r-- 1 root root    2 2014-04-17 14:37 format
        7 drwxr-xr-x 2 root root 4096 2014-04-17 14:37 hooks
        8 drwxr-xr-x 2 root root 4096 2014-04-17 14:37 locks
        9
       10 [root@centos ~]# ll /data/svn/test_repo/conf
       11 합계 12
       12 -rw-r--r-- 1 root root 1080 2014-04-17 14:37 authz
       13 -rw-r--r-- 1 root root  309 2014-04-17 14:37 passwd
       14 -rw-r--r-- 1 root root 2279 2014-04-17 14:37 svnserve.conf
       15
       16 [root@centos svn]# mv /data/svn/test_repo/conf/svnserve.conf /data/svn/test_repo/conf/svnserve.conf.org
       17
       18 [root@centos svn]# ll /data/svn/test_repo/conf
       19 합계 16
       20 -rw-r--r-- 1 root root 1080 2014-04-17 14:37 authz
       21 -rw-r--r-- 1 root root  309 2014-04-17 14:37 passwd
       22 -rw-r--r-- 1 root root 2279 2014-04-17 15:02 svnserve.conf.org
       23
       24 [root@centos svn]# vi /data/svn/test_repo/conf/svnserve.conf
       25 [general]
       26 anon-access = none             -> 비인증계정 : 접근 권한 없음 
       27 auth-access = write             -> 인증계정 : 쓰기 권한   
       28 password-db = passwd            -> 인증 계정 정보 파일
       29 authz-db = authz               -> 인증 계정의 저장소 권한 설정 파일 
       30 realm = test_repo's repository  -> 인증시 보여주는 저장소 설명(생략 가능)
       31 ~                               => 권한 : none / read / write
       32 ~
       33 "test_repo/conf/svnserve.conf" 6L116C written 

       



  • 계정 정보 추가
    • 저장소 프로젝트 디렉토리/conf/passwd 파일 수정 (원본은 별도 보관하고 새로 만들 것)
    • vi를 이용하여 환경 파일 내용 새로 작성 : vi 

       

        1 [root@centos svn]# vi /data/svn/test_repo/conf/passwd
        2 [users]
        3 svn_user1=1234            -> 사용자 계정과 암호 입력   
        4 svn_user2=1234            -> 쭉 입력
        5 ~
        6 ~
        7 "test_repo/conf/passwd" 3L, 38C written
        8 
        9 
       10 [root@centos svn]# svn checkout svn://127.0.0.1/test_repo
       11 인증 영역(realm): <svn://127.0.0.1:3690> test_repo repository
       12 'root'의 암호:
       13 인증 영역(realm): <svn://127.0.0.1:3690> test_repo repository
       14 사용자명:svn_user1
       15 'svn_user1'의 암호:
       16 
       17 -----------------------------------------------------------------------
       18 ATTENTION!  Your password for authentication realm:
       19 
       20    <svn://127.0.0.1:3690> test_repo repository
       21 
       22 can only be stored to disk unencrypted!  You are advised to configure
       23 your system so that Subversion can store passwords encrypted, if
       24 possible.  See the documentation for details.
       25 
       26 You can avoid future appearances of this warning by setting the value
       27 of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
       28 '/root/.subversion/servers'.
       29 -----------------------------------------------------------------------
       30 Store password unencrypted (yes/no)? yes
       31 Please type 'yes' or 'no': y
       32 Please type 'yes' or 'no': yes
       33 Please type 'yes' or 'no': 'yes'
       34 Please type 'yes' or 'no': Y
       35 Please type 'yes' or 'no': n
       36 Please type 'yes' or 'no': no
       37 Please type 'yes' or 'no': 'no'
       38 Please type 'yes' or 'no': yes
       39 Please type 'yes' or 'no': y
       40 Please type 'yes' or 'no': YES
       41 Please type 'yes' or 'no': Y
       42 Please type 'yes' or 'no': 
       43 Please type 'yes' or 'no': 18
       44 Please type 'yes' or 'no': 예      -> locale이 한글로 되어 있는 경우 한글(예 또는 아니오)로 답을 하자.
       45 svn: 인증 실패
       46               -> authz를 주석 처리하면 해결이 된다. authz는 보안강화를 위해서 사용해야 한다.
       47               -> authz를 사용하지 않으면, passwd를 통해 암호의 유출이 가능함. 
       48 [root@centos conf]# vi svnserve.conf
       49 [general]
       50 #anon-access = none           --> 주석 처리 (주석 처리 해도 그만, 안해도 그만)
       51 auth-access = write
       52 password-db = passwd
       53 #authz-db = authz              --> 주석 처리(위의 이유로...)
       54 realm = test_repo repository
       55 ~
       56 ~
       57 "svnserve.conf" 6L, 118C written
       58 
       59 [root@centos conf]# service svnserve stop
       60 svnserve 를 정지 중: [  OK  ]
       61 
       62 [root@centos conf]# service svnserve start
       63 svnserve (을)를 시작 중: [  OK  ]
       64 
       65 [root@centos conf]# svn checkout svn://127.0.0.1/test_repo
       66 체크아웃된 리비전 0.            --> 이렇게 나오면 정상 적용된 것임. 

       

       


       

  • authz 권한 설정
    • 위에서 주석처리한 authz를 다시 살려준다.
    • 역시 원본은 보관하고 새로 생성한다.

       

        1 [root@centos conf]# vi authz
        2 [/]
        3 svn_user1=rw
        4 svn_user2=rw
        5 ~
        6 ~
        7 "authz" 3L, 30C written
        8 
        9 [root@centos conf]# service svnserve stop
       10 svnserve 를 정지 중: [  OK  ]
       11 
       12 [root@centos conf]# service svnserve start
       13 svnserve (을)를 시작 중: [  OK  ]
       14 
       15 [root@centos conf]# svn checkout svn://192.168.219.238/test_repo
       16 체크아웃된 리비전 0.

       


    • 권한 설정 후 "인증실패"가 다시 뜬다면, 아래 URL 참고
      https://www.okjsp.net/bbs?seq=152962
      https://kldp.org/node/96377
    • 보다 자세한 설명은 조금 더 검색이 필요함. (향후 추가로 정리를 하자)

  • svn 포트 변경
    • 무엇이든 기본 제공하는 포트를 사용하는 자체가 좋지 않다. svn의 포트를 변경하여 사용하자.
    • svn의 기본포트는 3690이다. 이를 9369로 실행하는 명령어 : svnserve -d -r /home/svn --listen-port 9369
    • 즉, 위 "svnserve 서비스 데몬 만들기"에서 만든 파일에 변경을 해주어야 한다.
    • 주의: 설정 후 변경 후 체크아웃을 하면 아래와 같은 에러 발생함. 꼭 "svnserve 서비스 데몬 만들기" 서부터 적용하자. 안그러면 폴더를 다시 생성해야 함.

       

        1 [root@centos ~]# service svnserve start
        2 svnserve (을)를 시작 중: [  OK  ]
        3 [root@centos ~]# 
        4 
        5 [root@centos ~]# netstat -antlp | grep svn
        6 tcp        0      0 0.0.0.0:3690      0.0.0.0:*     LISTEN      6205/svnserve 
        7                              -> 현재 3690 포트에서 수행 중임. 
        8 [root@centos ~]# service svnserve stop
        9 svnserve 를 정지 중: [  OK  ]
       10 [root@centos ~]# 
       11 
       12 [root@centos ~]# netstat -antlp | grep svn
       13 [root@centos ~]# 
       14 
       15 [root@centos conf]# vi /etc/sysconfig/svnserve
       16 OPTIONS="--threads --root /data/svn --listen-port 9369"   --> 이와 같이 수정함.
       17 ~
       18 ~
       19 "/etc/sysconfig/svnserve" 1L, 56C written
       20 
       21 [root@centos conf]# service svnserve start
       22 svnserve (을)를 시작 중: [  OK  ]
       23 
       24 [root@centos conf]# netstat -antlp | grep svn
       25 tcp        0      0 0.0.0.0:9369      0.0.0.0:*     LISTEN      6281/svnserve    
                                       -> 9369로 변경하여 실행 됨.    

       


  • 재부팅시 자동시작 설정 (출처: http://jmnote.com/wiki/SVN_서버_설정)
    • 자동 시작 명령 : chkconfig svnserve on

       

        1 [root@centos conf]# chkconfig --list svnserve
        2 svnserve        0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제
        3 [root@centos conf]# 
        4 
        5 [root@centos conf]# chkconfig svnserve on
        6 [root@centos conf]# 
        7 
        8 [root@centos conf]# chkconfig --list svnserve
        9 svnserve        0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

       


  •   저장소 삭제 방법 (출처: http://jmnote.com/wiki/SVN_서버_설정)
    • 저장소를 만들때는 svnadmin으로 하지만, 삭제시는 그냥 지우면 된다고 함.

       

        1 [root@centos conf]# service svnserve stop
        2 svnserve 를 정지 중: [  OK  ]
        3 
        4 [root@centos conf]# rm -rf /data/svn/test_repo
        5 
        6 [root@centos conf]# ll /data/svn/test_repo
        7 ls: cannot access /data/svn/test_repo: 그런 파일이나 디렉터리가 없습니다. 

       


  






댓글0