标签存档: svn

subversion和apache,apr,apr-util,neon的关系

这里简单说明一下svn服务器和客户端的安装说明。

服务器

subversion服务器是不需要apache的,但是可以使用apache,视具体情况来选择。
1、如果只要通过file://或svn://来访问,则不需要apache,只安装svn即可,使用svnserve来作为服务。
2、如果你要建立一个可以通过http://或https://来访问的版本库服务器,则你需要使用apache。

客户端

在windows下,不管你要访问的是什么类型的服务器,只要安装一个TortoiseSVN就可以了,开发者已经帮你搞定一切。
在类Linux系统下,如果你通过file://或svn://来访问,则只要编译安装svn就可以,
如果通过http://访问,则要同neon编译,
如果通过https://访问,则要同带ssl支持的neon编译,
不论怎样,都要同apr和apr-util编译。

LINUX平台安装SVN客户端

1. 安装前准备

1)安装环境:SUSE-10.0,subversion-1.4.5
2) 需要3个tar.gz形式的源代码压缩包:
apr-1.2.11.tar.gz
apr-util-1.2.10.tar.gz
subversion-1.4.5.tar.gz
3) 系统需带有gcc等编译器

2. 安装步骤

1) 安装apr
以root帐号登陆linux系统,进入apr软件包存放的路径,依次执行以下命令:

$ tar zxvf apr-1.2.11.tar.gz
$ cd apr apr-1.2.11
$ ./configure
$ make
$ make install
$ make clean

2) 安装apr-util
和apr类似,进入apr-util软件包存放的路径,依次执行以下命令:

$ tar zxvf apr-util-1.2.10.tar.gz
$ cd apr apr-1.2.11
$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
$ make
$ make install
$ make clean

3)安装neon //为了支持http://和https://访问

$ tar zxvf neon-0.28.4.tar.gz
$ cd neon-0.28.4
$ ./configure --prefix=/usr/local/neon --enable-shared --with-ssl
$ make
$ make install

4)安装sqlite

$ tar zxvf sqlite-amalgamation-3.7.3.tar.gz
$ cd sqlit-3.7.3
$ ./configure --prefix=/usr/loca/sqlite
$ make && make install

5) 安装subversion
在存放subversion软件包的路径下,依次执行:

$ tar zvxf subversion-1.4.5.tar.gz
$ cd subversion-1.4.5
$ ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-neon=/usr/local/neon --with-ssl
$ make
$ make install
$ make clean

3. 验证安装成功

键入svn –version,如出现版本信息,显示如下,则表示安装成功:

4. 遇到问题

1)重启apache时出现错误:Error:while loading shared libraries libexpat.so.1 cannot open open shared object file No such file or directory

解决方案:在etc/ld.so.config文件中加入:usr/lib和usr/local/lib然后ldconfig下。

PS:/etc/ld.so.conf: 这个文件记录了编译时使用的动态链接库的路径。ldconfig命令是:将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用。

2)编译subversion时出现:configure: error: Subversion requires SQLite
解决方案:

$ cd sqllit-3.7.3
$ cp sqlite3.c ../subversion-1.6.17/sqlite-amalgamation/sqlite3.c

3)配置完成后,重启apache时出现的错误:httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so:

解决方案:

$ ./configure --prefix=/usr/local/apache2/--enable-module --enable-shared--enable-dav--enable-so --enable-maintainer-mode --enable-rewrite
#此处配置的为apache的参数,配置完成后需要重新安装。

Subversion svn配置

$ yum install svn #安装svn,如果是ubuntu,apt-get install subversion
$ svn #检查svn是否安装
$ cd /var/www/html/
$ mkdir test
$ cd /home
$ mkdir code
$ svnserve -d -r /home/code #启动svn服务
$ cd code
$ svnadmin create test
$ cd test
$ cd conf
$ vim svnserve.conf
#原来:
#anon-access = read
#auth-access = write
#password-db = passwd
#更改:
anon-access = none  #none不允许匿名访问
auth-access = write  #write允许授权读写
password-db = passwd

#新建post-commit提交svn自动同步文件
$ cd ../hooks/
$ vim post-commit
#修改
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn update /var/www/html/test--username super --password 123456 --no-auth-cache
$ chmod 755 post-commit
$ ./post-commit

#SVN强制写注释要求
$ vim pre-commit
#修改
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook

# check that logmessage contains at least 10 alphanumeric characters
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];
then
echo -e "Empty log message not allowed. Commit aborted!" 1>&2
exit 1
fi

成功…得瑟!!!

遇到问题:
1.直接在服务器端vim修改代码,导致服务器端与客户端svn不同步。解决方案:rm -rf 服务器端文件,然后在客户端再提交一次该文件。

p.s.特别感谢何总帮助

第 1 页,共 1 页1