- 在 rpm -e 移除已经安装好的svn时,报错error: "subversion" specifies multiple packages
- 造 成这个问题的主要原因是subversion被重复安装了两次或两次以上
- rpm -qa | grep e2fsprogs
- e2fsprogs-libs-1.39-10.el5
- e2fsprogs-libs-1.39-10.el5
- e2fsprogs-1.39-10.el5
- 使用 rpm -e --allmatches subversion 即可完全卸载
- subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人。
- svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。
- 本文主要介绍安装配置svn独立服务器的步骤。svn客户端操作见svn客户端TortoiseSVN安装配置和操作手册。
- svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据(在搞LDAP时就深受其害,没法根治),所以还是FSFS方式更安全一点。
- 1. svn服务器安装
- 操作系统: rhel5.4 x86_64(对linux不熟悉的,操作系统最好完全安装,不然依赖包会装的你吐血,本人亲身经历。)
- 获取svn安装包
- 最新版本subversion可以在http://subversion.apache.org/download/ 下载。
- subversion-1.6.18.tar.gz
- subversion-deps-1.6.18.tar.gz
- 编译svn
- 以root用户登录。
- 将subversion-1.6.18.tar.gz和subversion-deps-1.6.18.tar.gz传到服务器。
- tar xfvz subversion-1.6.18.tar.gz
- tar xfvz subversion-deps-1.6.18.tar.gz
- mv subversion-1.6.18 /opt/svn
- cd /opt/svn
- ./configure –prefix=/opt/svn –without-berkeley-db –with-zlib=/opt/svn/zlib
- (注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
- make clean
- make
- make install
- vi /etc/profile,在/etc/profile最后加入:
- PATH=$PATH:/opt/svn/bin
- export PATH
- (我在做实验的时候是写在env中的,看个人喜好)
- svn测试
- svn --version
- 如果显示如下,svn安装成功:
- svn,版本 1.6.18 (r1303927)
- 编译于 Jul 10 2012,23:33:30
- 版权所有 (C) 2000-2009 CollabNet。
- Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。
- 此产品包含由 CollabNet (http://www.Collab.Net/) 开发的软件。
- 2. svn配置
- 建立svn版本库目录
- 可建多个:
- mkdir -p /opt/svndata/repos1
- mkdir -p /opt/svndata/repos2
- 建立svn版本库
- svnadmin create /opt/svndata/repos1
- svnadmin create /opt/svndata/repos2
- vi /opt/svndata/repos1/conf/svnserve.conf
- # anon-access = read
- # auth-access = write
- anon-access = none
- auth-access = write
- # password-db = passwd
- password-db = /opt/svndata/repos1/conf/passwd
- # authzauthz-db = authz
- authz-db = /opt/svndata/repos1/conf/authz
- [root@localhost subversion]# cd /opt/svndata/repos1/conf/
- [root@localhost conf]# ll
- 总计 12
- -rw-r--r-- 1 root root 1080 07-10 23:53 authz
- -rw-r--r-- 1 root root 309 07-10 23:53 passwd
- -rw-r--r-- 1 root root 2421 07-11 00:17 svnserve.conf
- [root@localhost conf]# vi passwd
- [users]
- # harry = harryssecret
- # sally = sallyssecret
- admin =123456
- 注意:对用户配置文件的修改立即生效,不必重启svn。
- 文件格式如下:
- [users]
- <用户1> = <密码1>
- <用户2> = <密码2>
- 其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。
- [root@localhost conf]# vi authz
- 注意:
- * 权限配置文件中出现的用户名必须已在用户配置文件中定义。
- * 对权限配置文件的修改立即生效,不必重启svn。
- 用户组格式:
- [groups]
- <用户组名> = <用户1>,<用户2>
- 其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
- 版本库目录格式:
- [<版本库>:/项目/目录]
- @<用户组名> = <权限>
- <用户名> = <权限>
- 其中,方框号内部分可以有多种写法:
- /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
- repos1:/,表示对版本库1设置权限
- repos2:/abc, ,表示对版本库2中的abc项目设置权限
- repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限
- 权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
- 示例:
- [groups]
- adminadmin = admin
- [/]
- @admin = rw
- [repos1:/abc/aaa]
- king = rw
- [repos2:/pass]
- king =
rm /opt/svndata/repos1/conf/authz
rm /opt/svndata/repos1/conf/passwd
rm /opt/svndata/repos2/conf/authz
rm /opt/svndata/repos2/conf/passwd
useradd svn
passwd svn
根据提示为用户svn设置密码
chown -R svn:svn /opt/svndata
chown -R svn:svn /opt/data
su -svn -c “svnserve -d –listen-port 9999 -r /opt/svndata”
svnserve -d --listen-port 9999 -r /opt/svndata
killall svnserve
其中:
su - svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
–listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限
-r /opt/svndata指定根目录是/opt/svndata
检查:
ps -ef|grep svnserve
如果显示如下,即为启动成功:
svn 6941 1 0 15:07 ? 00:00:00 svnserve -d –listen-port 9999 -r /opt/svndata