安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 系统文档 > Linux环境下Subversion安装

Linux环境下Subversion安装

时间:2014-06-24来源: 作者:点击:
Linux环境下Subversion安装   ********* 安装 apr [root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz [root@os11728 src]# tar -zxvf apr-1.4.5.tar.gz [root@os11728 src]# cd apr-1.4.5 [root@os11728 apr-1.4.5]# ./configu

Linux环境下Subversion安装

  //内容来自安云网

*********安装apr

//内容来自AnYun.ORG

[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz
//内容来自AnYun.ORG

[root@os11728 src]# tar -zxvf apr-1.4.5.tar.gz //内容来自安云网

[root@os11728 src]# cd apr-1.4.5 //内容来自安云网

[root@os11728 apr-1.4.5]# ./configure –prefix=/usr/local/apr //本文来自安云网

[root@os11728 apr-1.4.5]# make //本文来自安云网

[root@os11728 apr-1.4.5]# make install //本文来自安云网

[root@os11728 apr-1.4.5]# cat /etc/ld.so.conf

//内容来自安云网

[root@os11728 apr-1.4.5]# echo /usr/local/apr/lib >> /etc/ld.so.conf

  //内容来自安云网

*********安装apr-util //内容来自安云网

[root@os11728 src]# wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.12.tar.gz
//内容来自AnYun.ORG

[root@os11728 src]# tar -zxvf apr-util-1.3.12.tar.gz

//本文来自安云网

[root@os11728 src]# cd apr-util-1.3.12 //内容来自安云网

[root@os11728 apr-util-1.3.12]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr //本文来自安云网

[root@os11728 apr-util-1.3.12]# make //本文来自安云网

[root@os11728 apr-util-1.3.12]# make install

//本文来自安云网

[root@os11728 apr-util-1.3.12]# echo /usr/local/apr-util/lib >> /etc/ld.so.conf //本文来自安云网

[root@os11728 apr-util-1.3.12]# ldconfig -v

1.1.  安装基本组件(libxmlopenssl)

[root@os11728 src]# yum check-update //本文来自安云网

[root@os11728 src]# yum -y update //本文来自安云网

[root@os11728 src]# yum clean packages

//内容来自AnYun.ORG

[root@os11728 src]# yum -y install libxml* openssl openssl-devel

 

//内容来自AnYun.ORG

1.2.  安装 sqlite

[root@os11728 src]# wget http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz //内容来自安云网

[root@os11728 src]# tar -zxvf sqlite-autoconf-3070800.tar.gz

//本文来自安云网

[root@os11728 src]# cd sqlite-autoconf-3070800

//内容来自安云网

[root@os11728 sqlite-autoconf-3070800]# ./configure –prefix=/usr/local/sqlite

//本文来自安云网

[root@os11728 sqlite-autoconf-3070800]# make

//内容来自安云网

[root@os11728 sqlite-autoconf-3070800]# make install

1.3.  安装 neon

 (不需要支持http协议可以略掉此安装) //内容来自安云网

[root@os11728 src]# wget http://www.webdav.org/neon/neon-0.29.6.tar.gz

//本文来自安云网

[root@os11728 src]# tar -zxvf neon-0.29.6.tar.gz

//内容来自AnYun.ORG

[root@os11728 src]# cd neon-0.29.6 //内容来自AnYun.ORG

[root@os11728 neon-0.29.6]# ./configure –prefix=/usr/local/neon –with-ssl=openssl //内容来自AnYun.ORG

[root@os11728 neon-0.29.6]# make //内容来自安云网

[root@os11728 neon-0.29.6]# make install

1.4.  安装Subversion

[root@os11728 src]# wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/subversion/subversion-1.7.5.tar.gz

//本文来自安云网

[root@os11728 src]# tar -zxvf subversion-1.7.5.tar.gz //本文来自安云网

[root@os11728 src]# cd subversion-1.7.5

//内容来自AnYun.ORG

[root@os11728 src]# mkdir /usr/local/src/subversion-1.7.5/sqlite-amalgamation //本文来自安云网

[root@os11728 src]# cp /usr/local/src/sqlite-autoconf-3070800/sqlite3.c /usr/local/src/subversion-1.7.5/sqlite-amalgamation/sqlite3.c //内容来自AnYun.ORG

[root@os11728 subversion-1.7.5]# ./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-apr=/usr/local/apache2 –with-apr-util=/usr/local/apache2 –with-ssl –with-zlib=/usr/local/zlib –enable-maintainer-mode –without-berkeley-db –enable-mod-activation –with-neon=/usr/local/neon –enable-shared

//本文来自安云网

[root@os11728 subversion-1.7.5]# make clean //本文来自安云网

[root@os11728 subversion-1.7.5]# make

//内容来自安云网

[root@os11728 subversion-1.7.5]# make install

在编译安装subvision时,提示configure: error: Subversion requires SQLite,原因是需要依赖Sqlite

//内容来自AnYun.ORG

解决方法:下载sqlite-3.6.13 ,解压后,进入sqlite目录,复制sqlite3.csubvision源码文件sqlite-amalgamation目录下,如果没有sqlite-amalgamation目录,手动新建一个即可。 //内容来自AnYun.ORG

make subvision时,出现以下错误提示: //内容来自安云网

/usr/local/src/neon-0.29.6/src/ne_auth.c:781: undefined reference to `ne__ntlm_destroy_context’ //内容来自AnYun.ORG

/usr/local/src/neon-0.29.6/src/ne_auth.c:785: undefined reference to `ne__ntlm_create_context’ //本文来自安云网

collect2: ld returned 1 exit status //内容来自安云网

make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1

//本文来自安云网

解决方法:修改/usr/local/src/neon-0.29.6/src/Makefile,将CFLAGS = -g -O2 -prefer-pic 改成 CFLAGS = -fPIC -g -O2,然后重新编译neon,接着再重新编译subversion即可。 //内容来自安云网

  //本文来自安云网

添加Subversion的环境变量

//本文来自安云网

[root@os11728 subversion-1.7.5]# vi /etc/profile

//内容来自安云网

在最后加上如下一行代码:

//内容来自AnYun.ORG

将其打开把

//内容来自安云网

export PATH=$PATH:/usr/local/subversion/bin //本文来自安云网

这句放在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC”的上一行 //内容来自安云网

立即生效环境配置,不需要重启,用下命令:

//本文来自安云网

[root@os11728 subversion-1.7.5]# . /etc/profile

//本文来自安云网

  //内容来自AnYun.ORG

测试SVN是否安装成功: //内容来自安云网

[root@os11728 ~]#svn –version //内容来自安云网

显示以下信息: //内容来自AnYun.ORG

svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0) //本文来自安云网

svn, version 1.7.1 (r1186859) //内容来自AnYun.ORG

   compiled Oct 25 2011, 11:24:55 //本文来自安云网

 

//内容来自AnYun.ORG

Copyright (C) 2011 The Apache Software Foundation. //内容来自AnYun.ORG

This software consists of contributions made by many people; see the NOTICE

//内容来自AnYun.ORG

file for more information. //内容来自AnYun.ORG

Subversion is open source software, see http://subversion.apache.org/

//内容来自AnYun.ORG

  //本文来自安云网

The following repository access (RA) modules are available:

//本文来自安云网

 

//本文来自安云网

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon. //本文来自安云网

  - handles ‘http’ scheme

//内容来自AnYun.ORG

* ra_svn : Module for accessing a repository using the svn network protocol. //本文来自安云网

  - with Cyrus SASL authentication //内容来自安云网

  - handles ‘svn’ scheme //内容来自安云网

* ra_local : Module for accessing a repository on local disk.

//本文来自安云网

  - handles ‘file’ scheme //内容来自安云网

表明安装成功,但出现了错误提示:svn: /usr/lib/libz.so.1: no version information available (required by /usr/local/subversion/lib/libsvn_delta-1.so.0) //内容来自安云网

这是libsvn_delta-1.so.0依赖的库/usr/lib/libz.so.1不可用导致的。错误追踪:

//内容来自安云网

[root@www ~]# cd /usr/lib

//本文来自安云网

[root@www lib]# ll libz*

//本文来自安云网

-rwxr-xr-x 1 root root 92598 Jan 10  2007 libz.a

//本文来自安云网

lrwxrwxrwx 1 root root    13 Apr 20  2010 libz.so -> libz.so.1.2.3

//内容来自安云网

lrwxrwxrwx 1 root root    13 Oct 13 14:45 libz.so.1 -> libz.so.1.2.3

//内容来自AnYun.ORG

-rwxr-xr-x 1 root root 75028 Jan 10  2007 libz.so.1.2.3 //内容来自AnYun.ORG

[root@www lib]# ldd libz.so.1.2.3

//内容来自AnYun.ORG

        linux-gate.so.1 =>  (0x00d8f000) //本文来自安云网

        libc.so.6 => /lib/libc.so.6 (0x00c0f000) //本文来自安云网

        /lib/ld-linux.so.2 (0x00bec000)

//本文来自安云网

从上可以看到libz.so.1软链接到libz.so.1.2.3libz.so.1.2.3zlib-1.2.3生成的库,该库可能已被删除,而我已安装的zlib-1.2.5,见:

//本文来自安云网

[root@www lib]# cd /usr/local/zlib/lib //内容来自AnYun.ORG

[root@www lib]# ls //本文来自安云网

libz.a  libz.so  libz.so.1  libz.so.1.2.5  pkgconfig

//内容来自安云网

[root@www lib]# ll libz* //本文来自安云网

-rw-r–r– 1 root root 101462 Oct 13 14:43 libz.a

//内容来自安云网

lrwxrwxrwx 1 root root     13 Oct 13 14:43 libz.so -> libz.so.1.2.5

//内容来自AnYun.ORG

lrwxrwxrwx 1 root root     13 Oct 13 14:43 libz.so.1 -> libz.so.1.2.5 //内容来自安云网

-rwxr-xr-x 1 root root  95004 Oct 13 14:43 libz.so.1.2.5 //内容来自安云网

[root@www lib]# ldd libz.so.1.2.5

//内容来自AnYun.ORG

        linux-gate.so.1 =>  (0x002f8000) //内容来自AnYun.ORG

        libc.so.6 => /lib/libc.so.6 (0×00134000)

//本文来自安云网

        /lib/ld-linux.so.2 (0x00bec000)

//本文来自安云网

故可将/usr/lib/libz.so.1重新链接至/usr/local/zlib/lib/libz.so.1.2.5,如下: //内容来自安云网

[root@www lib]# cp /usr/lib/libz.so.1 /usr/lib/libz.so.1.bak

//内容来自安云网

[root@www lib]# cp /usr/local/zlib/lib/libz.so.1.2.5 /usr/local/zlib/lib/libz.so.1.2.5.bak

//本文来自安云网

[root@www lib]# ln -fs /usr/local/zlib/lib/libz.so.1.2.5 /usr/lib/libz.so.1

//内容来自安云网

再次查看SVN版本信息:

//本文来自安云网

[root@www lib]# svn –version //内容来自AnYun.ORG

svn, version 1.7.1 (r1186859)

//内容来自AnYun.ORG

   compiled Oct 25 2011, 11:24:55

//内容来自安云网

  //本文来自安云网

Copyright (C) 2011 The Apache Software Foundation.

//本文来自安云网

This software consists of contributions made by many people; see the NOTICE //内容来自AnYun.ORG

file for more information.

//内容来自AnYun.ORG

Subversion is open source software, see http://subversion.apache.org/ //本文来自安云网

  //本文来自安云网

The following repository access (RA) modules are available: //内容来自安云网

 

//内容来自AnYun.ORG

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.

//本文来自安云网

  - handles ‘http’ scheme

//本文来自安云网

* ra_svn : Module for accessing a repository using the svn network protocol. //本文来自安云网

  - with Cyrus SASL authentication

//内容来自AnYun.ORG

  - handles ‘svn’ scheme

//内容来自安云网

* ra_local : Module for accessing a repository on local disk. //内容来自AnYun.ORG

  - handles ‘file’ scheme

//本文来自安云网

错误提示不见了,问题解决。^_^

//本文来自安云网

1.5.  SubversionApache HTTP Server 配置

修改Apache HTTP Server 配置

//本文来自安云网

[root@os11728 ~]# vi /usr/local/apache2/conf/httpd.conf

//本文来自安云网

1)增加以下模块: //内容来自安云网

   LoadModule dav_module modules/mod_dav.so
//内容来自AnYun.ORG

   LoadModule dav_svn_module modules/mod_dav_svn.so //内容来自安云网

   LoadModule authz_svn_module modules/mod_authz_svn.so

2)增加SVN的虚拟主机,设定 Subversion 文件库路径 //内容来自安云网

<VirtualHost *:80> //内容来自安云网

    ServerName svn.finet230.cn //内容来自AnYun.ORG

    DocumentRoot /usr/local/svnroot

//本文来自安云网

 

//内容来自安云网

    #bovin.phang@gmail.com SiteLogs

//内容来自AnYun.ORG

    CustomLog “|/usr/local/sbin/cronolog /var/www/logs/svn_finet230_cn/access_%Y%m%d.log” combined //本文来自安云网

    ErrorLog “|/usr/local/sbin/cronolog var/www/logs/svn_finet230_cn/error_%Y%m%d.log”

//内容来自AnYun.ORG

    <Directory “/usr/local/svnroot”> //内容来自安云网

           Options -Indexes FollowSymLinks Includes //内容来自AnYun.ORG

           AllowOverride All //内容来自安云网

           Order allow,deny //内容来自安云网

           #Allow from all //本文来自安云网

           deny from all //内容来自安云网

    </Directory> //本文来自安云网

  //内容来自AnYun.ORG

<Location /svn>

//内容来自安云网

        #告诉Aapche加载svn模块来处理请求 //内容来自安云网

DAV svn

//内容来自AnYun.ORG

 

//本文来自安云网

#指定SVN版本库父目录

//本文来自安云网

SVNParentPath “/usr/local/svnroot/” //内容来自安云网

 

//内容来自安云网

#连接框提示

//本文来自安云网

AuthName “Subversion repository”

//内容来自安云网

 

//内容来自安云网

#权限配置文件 //内容来自AnYun.ORG

AuthzSVNAccessFile “/usr/local/apache2/conf/dav_svn.authz”

//本文来自安云网

  //本文来自安云网

#采用何种认证 //内容来自安云网

Require valid-user

//本文来自安云网

Satisfy Any

//本文来自安云网

# The following is Basic authentication setting //内容来自AnYun.ORG

 

//内容来自安云网

#身份验证方式(连接类型设置)

//本文来自安云网

AuthType Basic

//内容来自安云网

 

//内容来自安云网

#用户配置文件(身份验证数据存放的路径及文件)

//内容来自安云网

AuthUserFile “/usr/local/apache2/conf/dav_svn.passwd” //内容来自AnYun.ORG

  //内容来自安云网

#<LimitExcept>

//内容来自AnYun.ORG

#Require valid-user

//内容来自AnYun.ORG

#</LimitExcept> //内容来自安云网

</Location>

//本文来自安云网

  //内容来自安云网

</VirtualHost>

//本文来自安云网

 

//内容来自安云网

   #其中authfile是通过“htpasswd [c] /usr/local/apache2/conf/dav_svn.passwd username password”来创建的

//本文来自安云网

   #”Require valid-user”告诉apacheauthfile中所有的用户都可以访问。如果没有它,

//内容来自安云网

   #则只能第一个用户可以访问新建库 //内容来自安云网

   #顺便把你的端口号也改一下,要不然可能&你以前的Apache的端口冲突

//内容来自安云网

#其中AuthzSVNAccessFile指定了文件库访问政策文件,Require valid-use表示只有经过认证的用户才可以访问, Satisfy Any表示允许匿名访问(要与后面提到的*参数配套使用),AuthUserFile用来指示使用htpasswd创建的密码文件的位置。

//内容来自AnYun.ORG

3)用Apachehtpasswd指令生成用户名和密码

//本文来自安云网

[root@os11728 ~]# htpasswd -cm /usr/local/apache2/conf/dav_svn.passwd bovin //内容来自AnYun.ORG

[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd bovin //内容来自AnYun.ORG

[root@os11728 ~]# htpasswd -m /usr/local/apache2/conf/dav_svn.passwd server //本文来自安云网

3)用Apachehtpasswd指令删除用户名和密码

//内容来自AnYun.ORG

[root@os11728 ~]# htpasswd -D /usr/local/apache2/conf/dav_svn.passwd bovin

 

//内容来自AnYun.ORG

htpasswd语法 //内容来自AnYun.ORG

  //内容来自安云网

htpasswd [ -c ] [ -m ] [ -D ] passwdfile username //内容来自安云网

 

//内容来自AnYun.ORG

htpasswd -b [ -c ] [ -m | -d | -p | -s ] [ -D ] passwdfile username password //本文来自安云网

 

//本文来自安云网

htpasswd -n [ -m | -d | -s | -p ] username

//本文来自安云网

 

//内容来自安云网

htpasswd -nb [ -m | -d | -s | -p ] username password //内容来自AnYun.ORG

top //内容来自AnYun.ORG

选项

//内容来自安云网

  //内容来自安云网

-b

//内容来自AnYun.ORG

    使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意,因为命令行中的密码是清晰可见的。 //内容来自安云网

-c //内容来自AnYun.ORG

    创建passwdfile文件。如果passwdfile已经存在,那么将被清空并改写。该选项不能和 -n 同时使用。 //内容来自AnYun.ORG

-n

//内容来自AnYun.ORG

    在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法,因为passwdfile参数(通常是第一个)被忽略了。该选项不能和 -c 同时使用。

//本文来自安云网

-m //内容来自AnYun.ORG

    使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。

//内容来自AnYun.ORG

-d

//内容来自安云网

    使用crypt()对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被htpasswd支持,但是在Windows, Netware, TPF上,该方法不能被httpd所支持。 //内容来自AnYun.ORG

-s

//本文来自安云网

    使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。

//本文来自安云网

-p //内容来自AnYun.ORG

    使用明文密码(不加密)。虽然htpasswd在所有平台上都支持这种方法,但是httpd只能在Windows, Netware, TPF上支持这种方法。

//本文来自安云网

-D

//内容来自AnYun.ORG

    如果username存在于passwdfile中,则删除该用户。

//本文来自安云网

passwdfile

//本文来自安云网

    包含用户名和密码的文本文件的名称。如果使用了 -c 选项,若文件已存在则更新它,若不存在则创建它。 //内容来自AnYun.ORG

username //本文来自安云网

    passwdfile中添加或更新记录。若username不存在则添加一条记录,若存在则更新其密码。

//本文来自安云网

password

//内容来自AnYun.ORG

将被加密并存储到文件中的明文密码。必须和 -b 同时使用。 //内容来自AnYun.ORG

  //本文来自安云网

4)编辑/usr/local/apache2/conf/dav_svn.authz文件 //内容来自安云网

[root@os11728 ~]# vi /usr/local/apache2/conf/dav_svn.authz

//内容来自AnYun.ORG

添加以下内容: //内容来自安云网

 

//内容来自AnYun.ORG

[aliases] //本文来自安云网

# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average //内容来自安云网

  //本文来自安云网

[groups] //内容来自AnYun.ORG

g_vip = server //本文来自安云网

g_manager = bovin

//内容来自AnYun.ORG

g_usr = seal,xieyan,yangdandan,sunny

//内容来自AnYun.ORG

g_usr_read = prolove

//内容来自AnYun.ORG

g_all = @g_vip,g_manager,g_user //内容来自AnYun.ORG

 

//内容来自安云网

[/] //本文来自安云网

@g_vip = rw //内容来自安云网

@g_manager = rw //内容来自安云网

 

//本文来自安云网

[bovin:/]

//本文来自安云网

@g_manager = rw //内容来自安云网

 

//本文来自安云网

[finet_tpl:/] //内容来自安云网

@g_vip = rw //本文来自安云网

@g_manager = rw

//内容来自安云网

@g_usr = rw

//本文来自安云网

@g_usr_read = r

//本文来自安云网

*= //内容来自安云网

重启apache

//内容来自AnYun.ORG

  //内容来自安云网

5SVN检出测试 //内容来自AnYun.ORG

[root@os11728 ~]# mkdir bovin //本文来自安云网

[root@os11728 ~]# svn checkout http://svn.finet230.cn/svn/bovin bovin #将svn.finet230.cn改为你的域名或IP

//内容来自AnYun.ORG

配置svnapache服务器时,在导入或提交时,如果是unixlinuxmac os x等系统可能遇到类似这样的权限问题:

//内容来自安云网

  //内容来自AnYun.ORG

svn: 提交失败(细节如下):

//内容来自AnYun.ORG

svn: Can’t open file ‘/usr/local/svnroot/bovin/db/txn-current-lock’: Permission denied //本文来自安云网

 或者 //内容来自安云网

svn: 提交失败(细节如下): //内容来自安云网

svn: Can’t create directory ‘/usr/local/svnroot/bovin/db/transactions/1-2.txn’: Permission denied

//内容来自AnYun.ORG

 

//本文来自安云网

这个主要原因:在svnadmin create时是root身份,所以,mod_dav_svn就没有write权限等。

//内容来自安云网

解决办法: //内容来自AnYun.ORG

修改目录/usr/local/svnroot的权限属性

//内容来自安云网

[root@os11728 ~]# chown -R daemon /usr/local/svnroot

//本文来自安云网

[root@os11728 ~]# chmod -R 755 /usr/local/svnroot //内容来自AnYun.ORG

  //内容来自安云网

 再试就ok~ //内容来自AnYun.ORG

1.6.  svnsync双机备份

  参阅:http://www.scmbbs.com/cn/svntp/2007/11/svntp4.php //本文来自安云网

  使用svnsync备份很简单,步骤如下:

//本文来自安云网

1)  在备份机上创建一个空库: //本文来自安云网

[root@os11728 ~]# svnadmin create /usr/local/svnroot/bovin

//内容来自AnYun.ORG

[root@os11728 ~]# chown -R daemon /usr/local/svnroot/bovin //内容来自AnYun.ORG

[root@os11728 ~]# chmod -R 755 /usr/local/svnroot/bovin //内容来自AnYun.ORG

  //内容来自安云网

2)更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):  

//本文来自安云网

[root@os11728 ~]# cd /usr/local/svnroot/bovin/hooks //内容来自安云网

[root@os11728 ~]# cp pre-revprop-change.tmpl pre-revprop-change //内容来自AnYun.ORG

[root@os11728 ~]# chmod 755 pre-revprop-change //内容来自安云网

[root@os11728 ~]# vi pre-revprop-change //内容来自AnYun.ORG

  将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。

//内容来自AnYun.ORG

3)初始化,此时还没有备份任何数据:

//本文来自安云网

[root@os11728 ~]# svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/ –allow-non-empty

//内容来自安云网

  语法是:svnsync init {你刚创建的库url} {源库url}

//内容来自安云网

  注意本地url是三个斜杠的:/// //内容来自安云网

4)开始备份(同步):

//内容来自AnYun.ORG

[root@os11728 ~]# svnsync sync file:///usr/local/svnroot/bovin/ //内容来自安云网

 

//内容来自安云网

5)建立同步脚本

//本文来自安云网

  备份完毕后,建立钩子脚本进行同步。在源库/hooks/下建立/修改post-commit脚本,在其中增加一行,内容如下:

//内容来自安云网

svnsync sync  –non-interactive file:///usr/local/svnroot/bovin/ //内容来自AnYun.ORG

常见问题解决: //内容来自安云网

问题一:

//本文来自安云网

svnsync init file:///usr/local/svnroot/bovin/ http://192.168.1.230/svn/bovin/ //内容来自AnYun.ORG

 从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有

//内容来自AnYun.ORG

svnsync: Couldn’t get lock on destination repos after 10 attempts //内容来自安云网

  //本文来自安云网

解决方法,执行以下命令: //内容来自AnYun.ORG

svn propdel svn:sync-lock –revprop -r 0 http://192.168.1.230/svn/bovin/ //内容来自安云网

删除属性“svn:sync-lock”于版本库版本 0 //内容来自AnYun.ORG

 

//内容来自安云网

问题二:

//内容来自安云网

[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit                                               //内容来自安云网

subversion/svnsync/main.c:1384: (apr_err=22)

//内容来自安云网

subversion/svnsync/main.c:1298: (apr_err=22) //本文来自安云网

svnsync: E000022: Destination HEAD (120) is not the last merged revision (119); have you committed to the destination without using svnsync?

//本文来自安云网

解决方法,执行以下命令:

//本文来自安云网

[root@www conf]# svn proplist -v –revprop -r0 file:///usr/local/svnroot/Bovin/

//本文来自安云网

Unversioned properties on revision 0:

//内容来自AnYun.ORG

  svn:sync-from-uuid //本文来自安云网

    91184778-99fa-495a-80f9-2b4ba10bcf3d

//本文来自安云网

  svn:sync-last-merged-rev

//内容来自安云网

    119 //内容来自安云网

  svn:sync-last-merged-revision

//内容来自安云网

    120

//内容来自安云网

  svn:date

//本文来自安云网

    2011-05-24T05:53:13.406401Z

//内容来自AnYun.ORG

  svn:sync-from-url

//本文来自安云网

    svn://192.168.1.230/Bovin //本文来自安云网

[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-revision 120 file:///usr/local/svnroot/Bovin/

//本文来自安云网

property ‘svn:sync-last-merged-revision’ set on repository revision 0 //内容来自AnYun.ORG

[root@www conf]# svn propset –revprop -r0 svn:sync-last-merged-rev 120 file:///usr/local/svnroot/Bovin/ //内容来自AnYun.ORG

property ‘svn:sync-last-merged-rev’ set on repository revision 0 //内容来自AnYun.ORG

[root@www conf]# sh /usr/local/svnroot/Bovin/hooks/post-commit                                              

//内容来自安云网

 

//内容来自安云网

问题三:

//内容来自AnYun.ORG

[root@www conf]# /usr/local/subversion/bin/svnsync sync file:///usr/local/svnroot/bovin/ //内容来自AnYun.ORG

Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′

//内容来自AnYun.ORG

Failed to get lock on destination repos, currently held by ‘www.finet85.cn:834e6569-67ad-472f-a745-25792c632a02′ //本文来自安云网

svnsync: Couldn’t get lock on destination repos after 10 attempts //内容来自安云网

  //内容来自安云网

这个时候可能属性被锁了。 //内容来自安云网

解决方法,执行以下命令: //内容来自AnYun.ORG

[root@www conf]# svn propdel svn:sync-lock –revprop -r0 file:///usr/local/svnroot/bovin/

//内容来自安云网

删除成功后,再试一遍基本就可以了。

//内容来自AnYun.ORG

如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。

//本文来自安云网

 从目标版本库获得锁失败,当前被“rhel500:284ff204-e16b-457f-933c-03d1c26c314b”持有 //本文来自安云网

svnsync: Couldn’t get lock on destination repos after 10 attempts //内容来自安云网

 

//内容来自安云网

  //内容来自安云网

一些备忘:

//本文来自安云网

1.客户机访问 //内容来自安云网

客户机的访问方法与服务器的运行方式有直接关系 //内容来自AnYun.ORG

window客户机: //内容来自安云网

1) 服务器以http方式运行

//内容来自AnYun.ORG

安装完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,在你想工作的目录下点击右键,执行checkout,输入http://svn服务器ip/svn/repository即可。 //内容来自安云网

2) 服务器以svnserve方式运行

//内容来自AnYun.ORG

同上的区别只是URL of repository变为 svn://svn服务器ip/home/mysvn

//内容来自AnYun.ORG

或者 svn+ssh://svn服务器ip/home/mysvn //本文来自安云网

(注意不是//svn服务器ip//svn/repository)

//本文来自安云网

 

//内容来自安云网

linux客户机: //内容来自AnYun.ORG

1) 服务器以http方式运行 //本文来自安云网

执行 #svn checkout http: //svn服务器ip/svn/repository

//本文来自安云网

2) 服务器以svnserve方式运行 //内容来自AnYun.ORG

执行 #svn checkout svn://svn服务器ip/home/mysvn

//内容来自AnYun.ORG

或者 #svn checkout svn+ssh://svn服务器ip/home/mysvn

//内容来自安云网

  //本文来自安云网

2.客户认证机制

//内容来自AnYun.ORG

 

//内容来自AnYun.ORG

这与服务器的运行方式有关

//本文来自安云网

  //本文来自安云网

服务器以svnserve方式运行 //内容来自安云网

默认下客户可以以匿名方式通过svn://方式任意访问档案库,为了限制其权限,比如只允许读操作,可以通过修改档案库conf子目录中的svnseve.conf文件来实现。 //本文来自安云网

#vi /home/mysvn/conf/svnseve.conf //内容来自AnYun.ORG

修改[general]字段下内容为:

//内容来自安云网

anon-access = read //内容来自AnYun.ORG

如果设为anon-access = none,则匿名用户不可以通过svn://方式访问档案库 //本文来自安云网

为了实现用户认证,我们一般采用svn+ssh://访问机制。 //本文来自安云网

首先在svnseve.conf文件设置anon-access = none禁止匿名用户通过svn://方式访问档案库

//本文来自安云网

在其后加入auth-access = write一行

//内容来自安云网

auth-access 是限制有援权的使用者(使用svn+ssh:// 来登入) 的存取权限,我们设为是可以读写。

//内容来自AnYun.ORG

当用户通过svn+ssh://访问时,服务器会自动启动ssh认证机制,要求用户输入密码,对于window用户来说还需要安装第三方软件openssh,才可以采用这种机制 //本文来自安云网

  //内容来自AnYun.ORG

  //内容来自AnYun.ORG

服务器以http方式运行 //内容来自AnYun.ORG

比如我们想给 Sally Harry 送交存取档案库的权限. 首先, 我们必须把它们加入到密码档案.

//内容来自AnYun.ORG

# ### 第一次: -c 建立档案

//内容来自安云网

# htpasswd -c /etc/svn-auth-file harry

//本文来自安云网

New password: ***** //内容来自安云网

Re-type new password: ***** //内容来自AnYun.ORG

Adding password for user harry

//内容来自安云网

# htpasswd /etc/svn-auth-file sally //内容来自AnYun.ORG

New password: ******* //内容来自AnYun.ORG

Re-type new password: ******* //内容来自安云网

Adding password for user sally

//内容来自安云网

#

//内容来自AnYun.ORG

接着,/usr/local/apache2/conf/httpd.conf的加入:

//内容来自AnYun.ORG

<Location /svn/repository >

//内容来自安云网

DAV svn //内容来自AnYun.ORG

SVNPath /home/mycvs //本文来自安云网

AuthType Basic

//本文来自安云网

AuthName “Subversion repository”

//内容来自安云网

AuthUserFile /etc/svn-auth-file

//本文来自安云网

Require valid-user //内容来自AnYun.ORG

</Location> //内容来自AnYun.ORG

重新启动 Apache后,如果有人要访问SVN服务器,系统会要求他输入用户名和密码。只有输入Sally Harry的用户名和相应的密码,才可以对档案库进行修改和访问

//内容来自AnYun.ORG

 

//内容来自安云网

3.添加用户 //内容来自安云网

打开/conf/目录,打开svnserve.conf找到一下两句: //内容来自AnYun.ORG

# [general] //本文来自安云网

# password-db = passwd //本文来自安云网

  //内容来自AnYun.ORG

去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件 //本文来自安云网

同样打开passwd文件,将

//内容来自AnYun.ORG

# [users] //本文来自安云网

# harry = harryssecret

//内容来自AnYun.ORG

# sally = sallyssecret //内容来自AnYun.ORG

这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户

//内容来自AnYun.ORG

 

//内容来自安云网

 

//本文来自安云网

4. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输入用户名密码直接就可以checkout出来。比如:linux有个用户wooinsvn也有一个用户wooin,并且密码都是一样的,当用wooin登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。

//内容来自安云网

 

//本文来自安云网

5. svn使用过程中牵扯到几种权限:文件系统的权限,linux系统权限,svn用户的权限,apache进程的权限。

//内容来自安云网

 

//本文来自安云网

文件系统的权限,linux系统权限:这里相同的意思,就是平时大家使用linux时文件夹和文件的访问权限。在svn建立仓库,文件夹,配置文件的时候用svnroot用户,并将仓库权限设置为700,不允许其他用户直接通过文件系统查看,只能由svnroot进行管理。

//本文来自安云网

 

//本文来自安云网

apache进程的权限:因为所有跟仓库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了很大的权限,但是apache进程没有访问仓库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行: //内容来自AnYun.ORG

User daemon # daemon改为svnroot,让apache进程以svnroot的身份运行 //内容来自AnYun.ORG

Group daemon

//内容来自安云网

 

//本文来自安云网

 

//本文来自安云网

svn用户的权限:就是在repository/authz.conf文件中设置的权限信息,是svn用来管理仓库访问权限的。

//内容来自AnYun.ORG

  //内容来自安云网

6. svn服务器设置有两种方式:http svnserve。这里介绍的是http方法 //内容来自安云网

 

//内容来自AnYun.ORG

7. /etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn //内容来自安云网

/usr/sbin/apachectl start //本文来自安云网

export SVN_EDITOR=vi //内容来自AnYun.ORG

  //内容来自AnYun.ORG

  //内容来自安云网

8. APR libraries 安装 SVN 的时候最好指定 –with-apr= –with-apr-util= 参数到 Apache 安装的根目录 //内容来自AnYun.ORG

ServerRoot)下,而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache

//内容来自AnYun.ORG

版本不同有可能导致 APR 库不匹配,出现类似:

//本文来自安云网

Can’t set position pointer in file ‘/svn/test/db/revs/1′: Invalid argument 的错误。

//本文来自安云网

Updated 2006-04-20 16:30 — 比如说如果你安装的是apache 2.2.0版本,就需要在编译安装svn的时候指定 //内容来自AnYun.ORG

–with-apxs–with-apr参数到你的apache2.2.0安装目录下: //本文来自安云网

./configure –divfix=${subversionInstallFolder} / //本文来自安云网

–with-apxs=${apacheInstallFolder}/bin/apxs / //内容来自安云网

–with-apr=${apacheInstallFolder} / //内容来自安云网

–with-apr-util=${apacheInstallFolder} /

//内容来自安云网

–with-ssl / //内容来自安云网

–with-zlib / //本文来自安云网

–enable-maintainer-mode //内容来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容