在FreeBSD下安装subversion

与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一下。