java learnging

一块探讨JAVA的奥妙吧
posts - 34, comments - 27, trackbacks - 0, articles - 22

在FreeBSD上安装SVN(Subversion)

Posted on 2005-06-11 15:37 bigseal 阅读(4840) 评论(0)  编辑  收藏
操作系统:FreeBSD 5.3
这是第一次在非Windows系统安装软件,对于系统中很多基本的东西都不熟悉,基本上都是看着配置文档来的,很多东西都是需要用的时候才找的,因此也花了不少时间。比较欣慰的时这些软件的文档的都很详细,使一个初次接触者也能够按照文档的说明一步一步完成安装。
目录:
1)  SVN简介
2)准备工作
3)安装使用tar打包的应用软件
4)开始安装
5)创建文件库
6)Apache配置
7)把CVS档案库转换为SVN档案库

1.   SVN简介
      
现在开发的源码,版本等管理一般都是CVS 。Subversion(SVN, http://subversion.tigris.org/)项目开始于2000年2月,作者之一是著名的 Open Source Development with CVS 作者Karl Fogel,也是CVS的开发者。
Subversion开始由CollabNet(
http://www.collab.net) 所有,但是它确实是一个开源的软件,遵从bsd样式的许可证。CollabNet只是给几个全职开发者发工资,并享有代码的版权,但是这个版权是 Apache/BSD-style的许可证,也就是说,你可以自由下载,修改,发布Subversion,而不需要CollabNet或其他人的许可。
Subversion意为更好的CVS,所以它除了包括了大多数CVS的特点,还有一些新鲜的东西:
Repositories 可以用内建的BerkeleyDB 或者普通文件实现。
目录在Subversion中和文件一样是versionable的对象,还有文件重命名等。Subversion还允许用户追踪文件和目录的任意属性信息,包括元信息(META-DATA)。甚至包括符号连接。在Subversion中,容易移动,复制和重命名。
高效的网络利用率。Subversion 可以用apache的基于HTTP的 WebDAV/DeltaV协议进行通讯。Apache服务器提供repository的服务。
二进制文件处理的增强。
本地化消息Localized messages
Subversion根据本地设置(locale settings) 用gettext()显示翻译过的错误,信息,帮助等。
Branching and tagging are cheap (constant time) operations
Subversion支持目前所有的流行的操作系统,比如Unix, Win32, BeOS, OS/2, MacOS X等。


下载到:
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
文档:

更多的信息还是到主页
http://subversion.tigris.org/上去看吧。
相关网站:
Subversion for Windows 安裝指南
http://sun.cis.scu.edu.tw/~nms9115/articles/softeng/scm/svn/2-install/svn_install.htm
Version Control with Subversion中文版:
http://svn.ntcu.net/svnbook/book.html
http://svnbook.red-bean.com/svnbook-1.1/svn-book.pdf

2.  
准备工作 
     
下载:subversion-1.2.0.tar.gz
地址:
http://subversion.tigris.org/servlets/NewsItemView?newsItemID=1159

下载:libxml2-2.5.3.tar.gz
地址:
http://cosoft.org.cn/html/osl/projects.php?group_id=4981

下载:neon-0.24.7.tar.gz
地址:
http://www.webdav.org/neon

下载:db-4.3.28.NC.tar.gz
地址:
http://www.sleepycat.com/download/index.shtml

下载:Apache Web Server 2.0.49 or newer

地址:
http://httpd.apache.org/download.cgi

3.   安装使用tar打包的应用软件
1) 安装:
整个安装过程可以分为以下几步:
Ø 取得应用软件:通过下载、购买光盘的方法获得;
Ø 解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2 等,所以你需要先解压。如
果是最常见的gz格式,则可以执行:“tar -xvzf 软件包名”,就可以一步完成解压与解
包工作。如果不是,则先用解压软件,再执行“tar -xvf 解压后的tar包”进行解包;
Ø 阅读附带的INSTALL文件、README 文件;
Ø 执行“./configure”命令为编译做好准备;
Ø 执行“make”命令进行软件编译;
Ø 执行“make install”完成安装;
Ø 执行“make clean”删除安装时产生的临时文件。
好了,到此大功告成。我们就可以运行应用程序了。但这时,有的读者就会问,我怎么执
行呢?这也是一个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/repos1http://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介绍性文字等是转自其它网站的。

只有注册用户登录后才能发表评论。


网站导航: