<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } -->
环境概述:
OS是ubuntu 8.04 server版。当然最简单的安装方法是apt-get install subversion,但是这样安装的subversion是1.4.6,版本太老了,要想安装最新版的,必须自己从源代码编译。
1,下载需要的源码包,检查环境:
首先下载Subversion最新源代码,我用的是1.6.1版:
http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz
下载后解压:
$ tar -zxvf subversion-1.6.1.tar.gz
进入解压后的目录,运行:
$ ./autogen.sh
这个脚本会告诉你是否系统需要安装autoconf,libtool等,如果缺少这些,则可以通过apt-get来安装,autoconf需要V2.58以上,libtool需要V1.4以上。
用apt-cache showpkg autoconf来查看版本号,用下面命令安装:
$ sudo apt-get install autoconf
$ sudo apt-get install libtool
然后可以运行./configure脚本,此脚本会告诉你缺少哪些依赖的库,在我的系统中缺少sqlite和apr, apr-util
然后下载需要使用的其他软件包:
1)sqlite-amalgamation,subversion1.6版需要Sqlite来存储数据
http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
下载成功后解压:
$ tar -zxvf sqlite-amalgamation-3.6.13.tar.gz
在刚才解压后的subversion目录中建立子目录sqlite-amalgamation,把sqlite3.c文件copy到这个子目录下。
2)如果你的linux系统中没有apr和apr-util,则先下载:
http://apache.hoxt.com/apr/apr-1.3.3.tar.gz
http://apache.hoxt.com/apr/apr-util-1.3.4.tar.gz
然后解压:
$ tar -zxvf apr-1.3.3.tar.gz
$ tar -zxvf apr-util-1.3.4.tar.gz
把解压后的apr复制到subversion 源码目录下,目录名必须是apr,然后进入apr子目录,运行./buildconf。
解压后的apr-util也需要复制到subversion源码的apr-util子目录中,然后也要执行./buildconf脚本。
此时subversion源代码目录中除了自己的代码外,还有上面三个库的目录,结构如下:
subversion
|------apr
|------apr-util
|------sqlite-amalgamation
|----- subversion自己的源码
2,编译安装
基本上此时subversion需要的环境已经配置好了,我们可以再次运行
$ ./configure
如果configure脚本没有报错,那么恭喜你,编译环境配置好了,如果报错,会明确告诉你需要的库和如何获取他们。我的系统到这里是没有问题的。
下面就是非常简单的编译了。运行:
$ make
等几分钟后,make成功执行,在运行:
$ make install
此时有可能会报错,基本上是权限不够的问题,那么可以换成:
$ sudo make install
就可以了。
现在subversion就算是安装成功了,看一下是不是最新版,运行:
$ svnversion –version
输出如下:
svnversion, version 1.6.1 (r37116)
compiled Apr 24 2009, 11:37:19
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
接下来就是配置svn了,因为是内部使用,不打算配http扩展,就配最简单的svnserve吧。
3,配置svnserve
首先需要创建repository,执行如下命令
$ svnadmin create /home/myname/repository/prj
这样就会在/home/myname/repository/prj目录下建立svn的目录结构,其他不管,直接进入conf子目录,可以看到三个文件:authz passwd svnserve.conf。首先编辑svnserve.conf文件,此文件需要如下内容:
anon-access=none # 禁止匿名登录
auth-access=write # 授权用户读与写
password-db=passwd #存放用户密码
auth-db=authz #授权的用户
然后可以编辑authz文件如下:
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN
=Joe Average 这里我们不需要用别名,不管他
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
itdev=zhangsan,lisi,wangwu #建立访问组与成员
[/home/myname/repository] #设置目录访问权限
# harry = rw
# &joe = r
itdev = rw #读写权限
[prj:/] #对于prj项目下的所有文件itdev组有读写权限
# @harry_and_sally = rw
# * = r
@itdev= rw
接下来,对于authz,为这三个用户设置用户名和密码,编辑passwd文件:
[users]
# harry = harryssecret
# sally = sallyssecret
zhangsan = zhangsan的密码
lisi = lisi的密码
wangwu = wangwu的密码
现在配置结束。启动svnserve:
$ svnserve -d -r /home/myname/repository
-d 表示以守护模式运行
-r 限制只输出指定路径下的版本库,这样在svn客户端可以用相对短的url。
启动成功后,可以在svn客户端来checkout了,配置svn URL如下:
svn://hostip/prj
这里prj就是刚才-r参数后面的路径。
在客户端建好项目的结构:
prj
|------trunk
|------tags
|------branches
再提交到服务器就可以了,trunk是开发主干,tags用来存放标记,branches用来存放分支。
其实subversion源码包中的INSTALL 说明文档写的很清楚,我就是参考此文档完成安装的。