與PHP5的安裝一樣,本來是一件很簡單的事情。
cvsup -gL 2 -h cvsup.freebsd.org /usr/share/examples/cvsup/ports-supfile
cd /usr/ports/devel/subversion
make install clean
但 首先鬱悶的一點就是,裝上的不是目前的穩定版本:1.2.3,而是1.3.0-rc4(前兩天裝的時候還是rc2)。不知道為什麼,別的軟體,比如 Apache或PHP都有提供幾個版本的ports供選擇,偏偏svn沒有,只有最新版。後來在FreeBSD的FTP伺服器上找到了一個老一點的穩定版 本:subversion-1.2.1.tbz,可以按下面的方式安裝。
pkg_add subversion-1.2.1.tbz
(注意,兩個版本SVN所用到的apr-nothr-db4的版本是不一樣的,需要刪除重裝)
不 過就算這個也將就了,但是不論是用ports方式安裝最新版,還是用package方式安裝的老版本,都有同一個問題:當我按照文檔配置的時候,發現沒有 mod_dav_svn.so和mod_authz_svn.so這兩個模組。反覆重裝過好幾次,包括重裝Apache都沒有找到這兩個東東。後來 GOOGLE了一些資料,但是都是通過下載源碼安裝,而不是通過ports或package,這樣安裝的話管理起來就很不方便了。我不想這麼做。
還好經過PHP5的折磨之後,我找到了同樣的辦法來對付它。
cd /usr/ports/devel/subversion
vi Makefile
(在其中的CONFIGURE_ARGS=一項末尾增加--with-apxs後儲存退出)
make install clean
即可編譯產生那兩個Apache mod。
之後就可以用下面的配置來設定通過HTTP訪問SVN的Repositry。
<Location /repo>
DAV svn
SVNParentPath /your_local_path/wwwrepo
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /your_local_path/svn-auth-file
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
其中的svn-auth-file是用htpasswd產生的HTTP使用者資訊檔,具體參考SVN的相關文檔。上面配置為允許匿名checkout,但只有svn-auth-file中的使用者可以checkin。
按這樣配置以後,再用下面的方式建立repositry:
cd /your_local_path/wwwrepo
mkdir project1
svnadmin create --fs-type fsfs ./project1
注意一下,這樣配置以後,匿名checkout是沒有問題,但是checkin時出錯了,後來改為允許匿名checkin後才發現是許可權的問題。因為HTTP方式訪問檔案是以www使用者身份進行的,所以必須chmod一下。