安装 svn client 之前,有一些必要的软体要先安装,其中包含 neon, sqlite, apr。
neon 安装
neon 是一个能够使得 svn 支援 http 下载网路资料的程式
- 载点 http://en.sourceforge.jp/projects/sfnet_buluoos/downloads/0.3/src/neon-0.29.6.tar.gz/
- ./configure --prefix=/usr/local/neon --bindir=/usr/local/bin --sbin=/usr/local/sbin --libdir=/usr/local/lib --includedir=/usr/local/include --mandir=/usr/local/share/man --with-ssl
- make
- sudo make install
--with-ssl 使 neon 可以支援 https 传输
检查 neon 是否支援 ssl : /usr/local/bin/neon-config --support ssl ,如果有支援的话,就不会跳出错误。
SQLite 安装
- 载点 http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz
- ./configure --prefix=/usr/local/sqlite --bindir=/usr/local/bin --sbin=/usr/local/sbin --libdir=/usr/local/lib --includedir=/usr/local/include --mandir=/usr/local/share/man
- make
- sudo make install
- 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 安装
- 载点 http://apache.cdpa.nsysu.edu.tw/subversion/
- 检查一下有那些configure 可以用
- [puritys]subversion-1.7.0$ ./configure --help |more
- `configure' configures subversion 1.7.0 to adapt to many kinds of systems.
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
将安装目录指定到 /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
等个几分钟就装好罗,试玩一下吧(有点....久)
- svn co http://xx
- svn up
- svn ci -m "xx"
- svn delete file
- svn add file
svn 检查是否安装成功
用 svn --version ,检查一下module是否都有装成功进去,刚刚我装了 ra_neon, ra_svn ,ra_local 三个modules。
- [puritys]SQLite$ svn --version
- svn, version 1.7.0 (r1176462)
- compiled Oct 25 2011, 23:51:11
- Copyright (C) 2011 The Apache Software Foundation.
- This software consists of contributions made by many people; see the NOTICE
- file for more information.
- Subversion is open source software, see http://subversion.apache.org/
- The following repository access (RA) modules are available:
- * 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
- - handles 'svn' scheme
- * ra_local : Module for accessing a repository on local disk.
- - handles 'file' scheme
其他错误讯息
「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 加上内容如下。
- LoadModule dav_module modules/mod_dav.so
- LoadModule dav_svn_module modules/mod_dav_svn.so
- LoadModule authz_svn_module modules/mod_authz_svn.so
- <Location /svn>
- DAV svn
- SVNPath /repository
- </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 中的设定有错误,每一行的最前面不能有空白
回應 (Leave a comment)