2011
Oct
25

网页好读版

安装 svn client 之前,有一些必要的软体要先安装,其中包含 neon, sqlite, apr。

neon 安装

neon 是一个能够使得 svn 支援 http 下载网路资料的程式

--with-ssl 使 neon 可以支援 https 传输

检查 neon 是否支援 ssl : /usr/local/bin/neon-config --support ssl ,如果有支援的话,就不会跳出错误。

SQLite 安装


  • vim ~/.bash_profile 加上 PATH=$PATH:/usr/local/bin

APR : Apache Portable Runtime

  • 载点 http://apr.apache.org/download.cgi
  • ./configure --prefix=/usr/local/apr --bindir=/usr/local/bin --sbindir /usr/local/sbin --libdir=/usr/local/lib --includedir=/usr/local/include --mandir=/usr/local/share/man --enable-shared --enable-threads
  • make
  • sudo make install

SVN Client 安装

Example
  1. [puritys]subversion-1.7.0$ ./configure --help |more
  2. `configure' configures subversion 1.7.0 to adapt to many kinds of systems.
  3. --bindir=DIR user executables [EPREFIX/bin]
  4. --sbindir=DIR system admin executables [EPREFIX/sbin]
  5. --libexecdir=DIR program executables [EPREFIX/libexec]
  6. --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
  7. --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
  8. --localstatedir=DIR modifiable single-machine data [PREFIX/var]
  9. --libdir=DIR object code libraries [EPREFIX/lib]
  10. --includedir=DIR C header files [PREFIX/include]
  11.  

将安装目录指定到 /home/proogram/svn

bin执行档指定安装到 /usr/local/bin

sbin执行档指定安装到 /usr/local/sbin

library指定安装到 /usr/local/lib

sqlite 指定已安装的目录 /home/program/SQLite

neon 指定已安装的目录 /usr/local (PATH = $PREFIX/bin/neon-config , 因为 neon 执行档我装在 /usr/local/bin里,所以这里的路径要这样设)

  • ./configure --prefix=/usr/local/svn --bindir=/usr/local/bin --sbin=/usr/local/sbin --libdir=/usr/local/lib --includedir=/usr/local/include --mandir=/usr/local/share/man --with-neon=/usr/local --with-sqlite=/usr/local --with-apr/usr/local --with-apr-util=/usr/local
  • make
  • sudo make install
  • vim ~/.bash_profile 加上 PATH=$PATH:/usr/local/bin

等个几分钟就装好罗,试玩一下吧(有点....久)

Example
  1. svn co http://xx
  2. svn up
  3. svn ci -m "xx"
  4. svn delete file
  5. svn add file

svn 检查是否安装成功

用 svn --version ,检查一下module是否都有装成功进去,刚刚我装了 ra_neon, ra_svn ,ra_local 三个modules。

Example
  1. [puritys]SQLite$ svn --version
  2. svn, version 1.7.0 (r1176462)
  3. compiled Oct 25 2011, 23:51:11
  4.  
  5. Copyright (C) 2011 The Apache Software Foundation.
  6. This software consists of contributions made by many people; see the NOTICE
  7. file for more information.
  8. Subversion is open source software, see http://subversion.apache.org/
  9.  
  10. The following repository access (RA) modules are available:
  11.  
  12. * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  13. - handles 'http' scheme
  14. * ra_svn : Module for accessing a repository using the svn network protocol.
  15. - with Cyrus SASL authentication
  16. - handles 'svn' scheme
  17. * ra_local : Module for accessing a repository on local disk.
  18. - handles 'file' scheme
  19.  

其他错误讯息

「svn: E170000: Unrecognized URL scheme forsvn: E170000: Unrecognized URL scheme for」 : neon,apr apr-util 其中之一没装成功

configure: error: Subversion requires SQLite ,残念!! 如果你看到这个讯息,就是你没有装 SQLite 喔,或是没有指定 SQLite 路径。

svn server

在装 svn server 之前,你必须先装 web server ,也就是 apache ,因为svn server 是透过 https protocol 来传输资料, apache 的安装设定可以参考 「这里」。

svn server :其实和 svn client 差不多,只差在 apache module,在安装 svn server 之前,必须先把 svn client 装起来,然后再编译 apache module ,这样 svn server 就可以使用了。

svn server 所须要的资料,就是 svn client 所抓下来的档案,两边的程式是放在一起的,在装 apache svn module前,要先把 c 语言的 header 档复制到正确的地方。

另外必须先安装 apache mod_dav module ,这个 module 可以在 apache 下载的压缩解中找到。

安装 mod_dav

用 apxs 就可以简单的安装成功了,若安装时发生以下的错误,意思是说 module 的名称没有被定义,所以我们用 -n dav_mod ,给他一个名字就可以了。

apxs:Error: Sorry, cannot determine bootstrap symbol name.

apxs:Error: Please specify one with option `-n'.

  • cd apache/dav/main
  • apxs -c -n dav_mod -i mod_dav.c
  • apache cond 加上 LoadModule dav_module modules/mod_dav.so

如果上述的安装方式,在 restart apache 时有 error 的话,可以考虑另一种安装方式,就是使用 apache 的 configure 方式去安装。

  • cd apache
  • ./configure --enable-dav=shared
  • make
  • sudo cp modules/dav/main/.libs/mod_dav.so (apache_path)/modules/
  • apache cond 加上 LoadModule dav_module modules/mod_dav.so

安装 mod_dav_svn

这个 apache module 在 svn 下载回来的档案中,就可以找到,路径在 「 svn/subversion/mod_dav_svn 」,这里重新再编译一次 svn 的资料,打开 svn server 的一些设定。

  • cd svn
  • make clean
  • ./configure --prefix=/home/program/svn --bindir=/usr/local/bin --sbin=/usr/local/sbin --libdir=/usr/local/lib --with-sqlite=/home/program/SQLite --with-neon=/usr/local --with-apr=/home/program/apache/bin/apr-1-config --with-apxs=/home/program/apache/bin/apxs --with-apr-util=/home/program/apache/bin/apu-1-config --with-ssl --enable-mod-activation
  • make

按著跳过安装步骤 (make install),我们直接把需要的档案复制到正确的位置即可,这里我们会用到两个 module : mod_dav_svn.so , mod_authz_svn.so ,以及一些 header 档。

  • cp -r svnpath/subversion/include /usr/include/ :复制 svn 会用到的 header 档到 /usr/include/
  • sudo cp subversion/mod_dav_svn/.libs/mod_dav_svn.so /home/program/apache/modules/
  • sudo cp subversion/mod_authz_svn/.libs/mod_authz_svn.so /home/program/apache/modules/
  • apache cond 加上 LoadModule dav_svn_module modules/mod_dav_svn.so
  • apache cond 加上 LoadModule authz_svn_module modules/mod_authz_svn.so

安装完程后就可以开始使用 svn 的功能了。

  • svnadmin create /repository : 建立 server 的 svn 路径
  • 编辑 /repository/conf/svnserve.conf ,将下列的资料 unmark,注意开头不能有空白
    • anon-access = read
    • auth-access = write
    • password-db = passwd
    • realm = My First Repository
  • 启动 svn : svnserve -t -r /repository

这时你有了一空的 svn repository,使用 「svn import xxxdir svn+ssh://localhost/repository/xxxdir -m "Add new file"」将 xxxdir 新增到 svn server。


上传成功后,就能用 svn co 抓下刚刚 commit 的资料夹,因为我将 client 与 server 都装在 localhost ,所以我只要下指令 svn co svn+ssh://localhost/repository ,就可以抓下 svn server 的资料,接著我随便建立几个档案之后,再输入 svn ci -m " initial " ,将资料 commit 到 svn server。

虽然资料已经存到 svn server 了,不过去查看 /repository 的资料结构后,发现里面的内容还蛮复杂的,没办法轻松的管理,其实 svn 是有提供 web manager 线上查看资料夹的,所以我修改 apache conf 加上内容如下。

Example
  1. LoadModule dav_module modules/mod_dav.so
  2. LoadModule dav_svn_module modules/mod_dav_svn.so
  3. LoadModule authz_svn_module modules/mod_authz_svn.so
  4. <Location /svn>
  5. DAV svn
  6. SVNPath /repository
  7. </Location>

加上上面的设定之后,再重启 apache ,然后就可以在 http://localhost/svn 看到 svn server 的资料内容罗。


svn: Can't open file '/repository/db/txn-current-lock': Permission denied

如果有这个错误讯息,代表你对资料夹没有读取的权限,使用 chmod 或是 chown 修改权限即可。

svnserve.conf:19: Option expected

svnserve.conf 中的设定有错误,每一行的最前面不能有空白

相关资料

网页好读版