SVN安装过程 on Linux

 

subversion-1.6.12

 

http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz

 

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-openssl=/usr/local/ssl --with-zlib=/usr/local/zlib --enable-maintainer-mode 

 

 

错误

configure: error: no XML parser was found: expat or libxml 2.x required

解决方法:

这个时候 rpm -qa expat2 检查是否安装 expat2

如果没有请在

https://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download

下载 expat2.tar.gz

 

 tar -xvf  expat2.tar.gz

cd expat-2.0.1

./configure

make,make install

 

 

 

安装openssl

http://www.openssl.org/source/

 

./config -fPIC --prefix=/usr/local/ssl/ enable-shared

 

 

/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

 

/usr/local/lib/libz.a: could not read symbols: Bad value

一般是64 位 电脑才会出现。

 

解决方法如下:

cd zlib-1.2.3 //进入zlib目录

 

CFLAGS="-O3 -fPIC" ./configure   //使用64位元的方法进行编译

 

make clean

 

make

 

make install

 

 

 

如果 make install 出现下面错误:

/home/upload/subversion-1.6.6/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

make: *** [revision-install] Error 127

解决办法:

1、编辑/etc/ld.so.conf文件

vi /etc/ld.so.conf

添加下面一行代码

/usr/local/lib

2、保存后运行ldconfig:

/sbin/ldconfig

注:ld.so.conf和ldconfig用于维护系统动态链接库。

3、然后再安装

make && make install

测试是否安装成功

1

/usr/local/subversion/bin/svnserve --version

(也可以试试 svn help命令)

如果显示如下,svn安装成功:

 

subversion/bin/svnserve --version

svnserve, version 1.6.12 (r955767)

   compiled Jul 11 2015, 08:15:46

 

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/).

 

The following repository back-end (FS) modules are available:

 

* fs_fs : Module for working with a plain file (FSFS) repository.

 ---------------------------------------------------

 

/usr/local/subversion/bin

bash-3.2$ svnadmin create /lab/svn-repository/svn-test

 

配置apache支持svn

#vi /usr/local/apache/conf/httpd.conf

在文件末尾添加

 

<Location /subversion>

DAV svn

# (此处配置你的版本库根目录)

SVNParentPath /lab/svn-repository/

# (连接类型设置 基本验证)

AuthType Basic

#(此处字符串内容修改为提示对话框标题)

AuthName "Welcome to my svn-repository!" 

# (此处修改为访问版本库用户的文件,用apache 的htpasswd命令生成)

AuthUserFile /lab/svn-repository/passwd

# (此处修改为访问版本库权限的文件)

AuthzSVNAccessFile /lab/svn-repository/auth.conf

# ("Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库)

Require valid-user

</location>

保存文件退出!

重新启动apache

apachectl restart

 

试试看能访问不

#curl http://192.168.1.104/subversion/svn-test/

 

配置svn权限管理(即authz.conf的配置)

添加用户:

#cd /usr/local/apache2/bin

# ./htpasswd –c /lab/svn-repository/passwd user1

第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加

第二次添加用户不需要带 –c 参数 如:

#cd /usr/local/apache2/bin

#./htpasswd /lab/svn-repository/passwd user2

权限分配:

#vi /lab/svn-repository/auth.conf

#这个表示群组设置

[groups]

#这个表示admin群组里的成员 user1,user2

Admin=user1,user2

#这个表示Develop群组里的成员 u1,u2

Develop=u1,u2

#这表示,仓库svn-test的根目录下的访问权限 

[svn-test:/]

#svn-test仓库user1用户具有读和写权限

user1=rw

#svn-test仓库user2用户具只有读权限

user2=r

#这表示 群 develop的成员都具有读写权限

@develop=rw 

#这个表示在所有仓库的根目录下

#[/]

#这个表示对所有的用户都具有读权限

*=r

 

 

注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: 'user1' ",里面的内容可以根据自己的需要自行添加,不必与我上面所写的相同!

 

#apachectl restart

 

就可以通过 http://127.0.0.1/subversion/svn-test 这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限

最后启动svn

#/usr/local/subversion/bin/svnserve -d -r /lab/svn-repository/

-d 表示以 daemon 方式(后台运行)运行

-r /svn/project 指定根目录是/svn/project

检查服务器是否启动正常:

#ps –ef|grep svnserve

修改权限

chown -R   user1    /lab/svn-repository/svn-test/

chmod 777 -R /lab/svn-repository/svn-test/