首頁‎ > ‎電子期刊‎ > ‎2007 年 4 月號‎ > ‎

Subversion架設心得


前言

Subversion是目前最常用的版本管理系統,比起老牌子的CVS,Subversion功能更加強大;例如CVS只能追蹤單獨檔案的歷程,而 Subverion能追蹤整個目錄的更動,以及Subversion支援交易式的更新,對於所有的異動不是成功就是失敗。有關Subversion在使用 上的介紹可以參考免費的Subversion Book(http://svn.stu.edu.tw/svnbook/)。

在本文中筆者分享Subversion的安裝過程,主要用原始碼編譯的方式進行;若是採用Linux的RPM或APT機制來安裝會相對簡單許多,在Subversion的官方網站(http://subversion.tigris.org)可以找到許多資訊。本文最主要的特色是對於剛接觸Linux的人也能Step By Step的架好自己專屬的Subversion Server。

環境

筆者的Linux環境為Cent OS 4.4版(http://www.centos.org),而Apache採用LAMPP(http://www.apachefriends.org/zh_tw/xampp-linux.html);需要Apache的原因是可以讓Subversion支援網際網路連線模式,可以透過HTTP來管理專案,雖然Subversion有本身的SVN Server但需要藉由SSH連線以及要有Linux帳號,使用上較為不方便。

準備

在安裝Subversion Server時需要相依的套件,底下一一介紹:

下載Subversion及相關套件

Subversion的原始碼及編譯時所需的安裝套件(apr、apr-utl…等)可以在官方網站(http://subversion.tigris.org) 一併找到,在撰寫本文時的最新版本為1.4.3;可以用以下的指令下載及解壓縮,其中/opt/downloads為筆者自行建立的目錄,讀者可以選擇下 載至任意目錄,而subversion-1.4.3.tar.gz及subversion-deps-1.4.3.tar.gz解壓縮後會放到同一目錄 下:

 
cd /opt/downloads/
wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.gz
tar zxvf subversion-1.4.3.tar.gz
tar zxvf subversion-deps-1.4.3.tar.gz
cd subversion-1.4.3

安裝Apache Portable Runtime

此步驟安裝apr及apr-util套件,首先切換到subversion目錄(本例為/opt/downloads/subversion-1.4.3/),然後再切換到apr目錄:

 
cd apr
./configure
make
make install

安裝好的目錄會在/usr/local/apr/。

apr-utl的安裝方式亦同如下:

 
cd apr-util
./configure --with-apr=/usr/local/apr/
make
make install

在編譯apr-util時用到apr,所以需指定apr的安裝目錄,在./configure後加入--with-apr=/usr/local/apr/參數;安裝好的目錄會在/usr/local/apr-util/。

安裝Neon Library

接下來安裝Neon Library,這個函式庫主要的作用在於讓Subversion Client端工具能透WebDAV通訊協定來與Subversion Server溝通;WebDAV(http://www.webdav.org)擴充了HTTP通訊協定,讓使用者可以針對Web Server上的檔案來進行編輯及管理。

 
cd neon
./configure
make
make install

安裝好的Neno Library會在/usr/local/include/下。

Apache Web Server

Apache Web Server本文採用LAMPP內的版本,以下為安裝步驟,最新的版本可至http://www.apachefriends.org/zh_tw/xampp-linux.html查詢,在撰寫本文時的版本為1.6版。

  1. cd /opt/downloads/
  2. wget http://nchc.dl.sourceforge.net/sourceforge/xampp/xampp-linux-1.6.tar.gz
  3. tar -zxf xampp-linux-1.6.tar.gz -C /opt

安裝

編譯指令解說

在準備工作做好後即可切換到Subversion的目錄進行編譯;其編譯及安裝如下,有關./configure的參數特別解釋如下:

  • --with-apr-util=/usr/local/apr/bin:指定apr-util的目錄。
  • --with-apr=/usr/local/apr/bin:指定apr的目錄。
  • --with-apxs=/opt/lampp/bin/apxs:指定Apxs模組位置,若非採用Linux內建之Apache,則需指定位置。

準備Apxs模組

因為我們不是使用預設Linux提供的Apache,而是使用自行的Apache版本,所以需特別指定此選項以用到Apache中的Apxs模組, 而在LAMPP中的Apxs指令需正常執行,則需另外加入LAMPP原始碼中的include及build目錄,其操作步驟如下。

編譯及安裝

 
cd /opt/downloads/subversion-1.4.3/
./configure --with-apxs=/opt/lampp/bin/apxs --with-apr-util=/usr/local/apr/bin --with-apr=/usr/local/apr/bin
make
make install

檢查安裝是否成功

在安裝完後檢查以下幾點來確認安裝成功:

  • 在/opt/lampp/modules下有mod_dav_svn.so的檔案。
  • vi /opt/lampp/etc/httpd.conf,檢查其中的LoadModule區段有LoadModule dav_svn_module modules/mod_dav_svn.so此行。
  • 在任意的目錄下打svn help,出現svn指令說明。

設定

建立Repository

在安裝好了Subversion後,接下來我們建立一個Repository,利用svnadmin指令如下:

 
cd /opt
mkdir svn
svnadmin create /opt/svn/repos/

讓Apache支援Subversion

接下來在Apache的設定檔案中的最後面加入以下的描述,以讓Apache支援Subversion目錄而能藉由遠端存取Subversion:

 
vi /opt/lampp/etc/httpd.conf
:wq

<Location /svn/repos>
DAV svn
SVNPath /opt/svn/repos
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /opt/svn/passwd
Require valid-user
</Location>

產生帳號密碼認證檔案

在上述的設定中認證的部份支援帳號及密碼的認證,在AuthUserFile指定了認證檔案的位置,我們可以用以下的指令來產生認證檔案以及加入帳號。

/opt/lampp/bin/htpasswd -c /opt/svn/passwd ChangKH

若是檔案已存在,只要加入新的帳號,則可以使用以下的指令。

/opt/lampp/bin/htpasswd /opt/svn/passwd ChangKH01

完成以上步驟即安裝完成Subversion Server;可以用http://yourip/svn/repos來連上Subversion Server或是使用其它的Subversion Client端工具。

結語

Subversion是目前在Open Source領域中使用最廣泛的版本管理系統,它優異的設計概念不只能管理一般的程式碼,更可以用來管理檔案;在本文中我們介紹了Subversion Server的架設,並在Linux上運行;Subversion的安裝若初次接觸會覺相當繁瑣,希望此篇對於欲架設Subversion Server的讀者能有所幫助。

Comments