好了,到此大功告成。我们就可以运行应用程序了。但这时,有的读者就会问,我怎么执行呢?这也是一个Linux特色的问题。其实,一般来说,Linux的应用软件的可执行文件会存放在/usr/local/bin目录下!不过这并不是“放四海皆准”的真理,最可靠的还是看这个软件的INSTALL和README
文件,一般都会有说明。
2) 卸载:
通常软件的开发者很少考虑到如何卸载自己的软件,而tar又仅是完成打包的工作,所以并没有提供良好的卸载方法。一般都提供
make uninstall 来卸载软件的。
说明:阅读附带的INSTALL文件、README 文件是很重要的,大部分软件的安装信息都是从这里得到的。
4. 开始安装
1)安装libxml2-2.5.3
这是一个提供XML解析的类库,在安装subversion之前必须安装。
tar -zxf libxml2-2.5.3.tar.gz
cd libxml2-2.5.3
./configure
make
make install
make clean
2)安装 Neon library 0.24.7
Neon库允许SVN客户端在Internet上使用基于WebDAV 的协议和远程知识库交互。
tar -zxf neon-0.24.7.tar.gz
cd neon-0.24.7
./configure
make
make install
make clean
3)安装Berkeley DB 4.3.28
当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDB( Berkeley Database)。BDB是一个轻量级的关系数据库,可以作为一个轻巧的内置数据库,在很多开源项目下有很多应用,比如CVSTrac。FSFS格式主要的特点是可以支持Subversion的数据库和Subversion服务器可以在不同的物理机器上,可以通过网络共享(不知道是否支持NFS?),能很好的工作在MS
Win98上,并且速度更快,但是由于FSFS是一种新的格式,稳定性可能没有BDB好。
比较郁闷的是我把Berkeley DB安装完成后,安装SVN的时候竟然检测不到,只有用FSFS格式的数据库了。
tar -zxf db-4.3.28.NC.tar.gz
cd docs
../dist/configure
make
make install
make clean
4)安装Apache 2.0
tar -zxf httpd-2.0.54.tar.gz
./configure --enable-dav --enable-so --enable-maintainer-mode
make
make install
make clean
注意:configure后面参数--enable-dav 表示构建mod-dav,--enable-so表示开启共享模块的支持也就是mod_dav_svn模块,--enable-maintainer-mode表示启用调试信息
5)安装Subversion
tar -zxf subversion-1.2.0.tar.gz
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install
make clean
注意:如果Apache未按照默认路径安装或出现跳过构建mod_dav_svn的警告信息,就需要在./configure
加上参数 --with-apxs=/usr/local/apache2/bin/apxs来构建mod_dav_svn并和Apache关联起来.
5. 创建文件库
Subversion 所提供的 svnadmin 工具, 有个专门处理这件事的子命令. 要建立一个新的档案库, 只要执行:
$ svnadmin create /usr/svn/repos/test
这样就在“/usr/svn/repos”目录下创建了一个test档案库,其中档案库的路径为“/usr/svn/repos/test”
注意:svnadmin工具的默认路径为“/usr/local/bin/svnadmin”
在你执行 svnadmin create 命令之后, 这个目录中就会有全新的 Subversion 档案库. 让我们看一下在这个目录里产生了什么东西.
$ ls /usr/svn/repos/test
dav/ db/ format hooks/ locks/ README.txt
除了 README.txt 与 format 檔以外, 档案库是由一群子目录组成. 就像 Subversion 其它部份的设计一样,
模块化是很重要的原则, 而且阶层式组织要比杂乱无章好. 以下是新的档案库目录中, 各个项目的简单叙述:
dav
提供给 Apache 与 mod_dav_svn 使用的目录, 让它们储存内部数据.
db
主要的 Berkeley DB 环境, 里面都是储存 Subversion 档案系统 (就是你置于版本控制的全部数据所在)
的数据库表格.
format
一个内容为一个整数的档案, 表示档案库配置的版本号码.
hooks
一个放置 hook 脚本文件模板的目录 (如果你有安装的话, 还有脚本档本身的档案).
locks
用来放置 Subversion 档案库锁定数据的目录, 用来追踪存取档案库的客户端.
README.txt
这个档案只是用来告知使用者, 他们在看的是 Subversion 的档案库.
6. Apache配置
SVN可以同过两种方式提供客户端对档案库的访问。
采用Apache HTTP 服务器 (httpd)。使用WebDAV/deltaV 通讯协议与客户端交互, 这个通讯协议
(它是 HTTP 1.1 的扩充; 请参照 http://www.webdav.org/) 采用广为使用的 HTTP 通讯协议。
采用SVN自带的svnserve服务器。这个程序要比 Apache 更轻便, 而且更容易设定,它会与 Subversion
客户端透过 TCP/IP 联机以自订的通讯协议沟通。
我们采用了Apache服务器的方式,配置的具体步骤如下:
1).Apache需要加载模块
为了使客户端能够通过Apache来访问SVN档案库,Apache需要加载一个特殊的模块mod_dav_svn。如果您的Apache是按照与预设目录安装的,mod_dav_svn
模块应该会安装在 Apache 安装位置 (默认路径是 /usr/local/apache2) 的 modules 子目录内。同时在Apache的配置文件httpd.conf(默认路径为/usr/local/apache2/conf)中已经使用LoadModule指令加载了该模块(这是安装过程中自动添加)。LoadModule
指令的语法很简单, 就是将一个具名模块对映到共享链接库在磁盘上的位置:
LoadModule dav_svn_module modules/mod_dav_svn.so
注意这个指令必须出现在其它的 Subversion 相关指令之前。
2).配置匿名访问
使客户端能够通过Apache访问资源库还需要告诉Apache资源库的位置,这需要我们在htppd.conf中加入Location指令来配置。
<Location /test>
DAV svn
SVNPath /usr/svn/repos/test
</Location>=
其中DAV表示处理方式,SVNPath是SVN档案库的位置。
这样你就可以使用http://servername/test来访问档案库。
如果你计划支持多个 Subversion 档案库, 而它们都有着共同的本地磁盘路径, 你可以使用另一种指令 SVNParentPath,
指示它们共同的父路径。如果我们在路径 /usr/svn 之下建立多个 Subversion 档案库, 并以http://servername/svn/repos1,http://servername/svn/repos2
等等的 URL 供人存取, 你可以使用下面中的 httpd.conf 设定语法:
<Location /svn>
DAV svn
SVNParentPath /usr/svn/repos
</Location>
使用前述的语法, Apache 会将所有路径以 /svn/ 开始的 URL 都交给 Subversion DAV 供应模块处理,
它会假设任何以 SVNParentPath 指令指定的目录都是 Subversion 档案库。 不像SVNPath, 这个相当便利的语法可以让你在建立新的档案库时,
仍旧不必重跑 Apache。 这时我们可以同过http://servername/svn/test来访问我们刚才的档案库,同样如果/usr/snv/repos/目录中还有档案库cvsrepos,我们可以通过http://servername/svn/cvsrepos来访问,并不需要重新配置。
3).配置用户验证
我们使用最简单的是基本验证机制,它只会使用使用者名称与密码, 用以确认使用者是他所声称的身份。Apache 提供了htpasswd
工具程序,来管理接受的使用者名称与密码,也就是你想要授与存取 Subversion 档案库权限的使用者。 让我们授与 Sally
与 Harry 送交存取的权限。 首先, 我们必须把它们加入到密码档案。
$ ### 第一次: 以 -c 建立档案
$ htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
$ htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
$
接着, 你需要在 httpd.conf 的 Location 区块中新增几个指令, 告诉 Apache 如何处理你的新密码文件。
AuthType 指令指定应使用何种认证系统。 在目前的状况中, 我们想要指定 Basic 认证系统。
AuthName 是一个任意的名称, 让你用来指定认证领域 (authentication domain)。 大多数的浏览器在向使用者询问使用者代号与密码时,
会将这个名称显示在弹出的对话框中。
AuthUserFile 指令指定你以 htpasswd 产生的密码文件
Require 指令指定只有通过验证的用户才能访问。
在新增这四个指令后, 你的 <Location> 区块看起来应该像这样:
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
现在如果你重新启动 Apache, 任何需要认证的 Subversion 动作都会从 Subversion 客户端取得使用者代号与密码,
这可能是使用先前置于快取的值, 或是向使用者询问。
7. 把CVS档案库转换为SVN档案库
cvs2svn工具是用来把CVS档案库转换为SVN档案库的。
1).安装
下载:Python 2.0
地址:http://www.python.org/
说明:执行csv2svn中Python 脚本所需要的环境
安装:
cd /usr/software
tar -zxf Python-2.4.1.tgz
cd Python-2.4.1
./configure
make
make install
make clean
下载:RCS
地址:http://www.cs.purdue.edu/homes/trinkle/RCS/
说明:用来读CVS档案库
安装:
cd /usr/software
tar -zxf rcs-5.7.tar
cd rcs-5.7
./configure
make
make install
make clean
注意:make操作只能由非root用户执行
下载:GNU 工具
地址:http://www.gnu.org/software/coreutils/
说明:可能FreeBSD系统已经有了
安装:
cd /usr/software
tar -zxf coreutils-5.2.1.tar.gz
cd coreutils-5.2.1
./configure
make
make install
make clean
下载:cvs2svn
地址:http://cvs2svn.tigris.org/
说明:
安装:
cd /usr/software
tar -zxf cvs2svn-1.2.1.tar.gz
cd cvs2svn-1.2.1
make install
make clean
2).使用cvs2svn把CVS档案库转换为SVN档案库
使用cvs2svn工具根据需要可以几种转换方式供选择的。默认的方式为完全转换,我们就是采用这样方式的。
进入csv2svn所在的目录:
cd /usr/software/cvs2svn-1.2.1
./cvs2svn --svnadmin=/usr/local/bin/svnadmin --encoding=gb2312
--fs-type=fsfs -s /usr/svn/repos/CVSRepos_JSP /usr/software/CVSRepo_JSP
参数说明:
--svnadmin svndadmin的路径,创建SVN档案库时需要
--encoding 所采用的编码,默认为ascii
--fs-type 档案库的类型fsfs或bdb
-s SVN档案库的位置
最后一个是要转换CVS档案库的位置
注:本文中一些SVN介绍性文字等是转自其它网站的。