64 位 FreeBSD 上部署轻量级 Subversion
其实,我要的只是一个与 Apache 无关的轻量的独立的 Subversion 守护进程,即 svnserve;这次操作系统是 64 位的 FreeBSD 7.2。不知是 64 位的原因还是 7.2 的原因,部署过程非常不顺利。前后陆陆续续地折腾了两个多星期,快把 Google 都搜烂了。期间公司运维的贾同学与杨同学给予了大力帮助,在此表示感谢。
现在我们开始。首先刻录 64 位 FreeBSD 7.2 的第一张 CD,分区,最小化安装,设置 root 密码,添加隶属 wheel 组的普通用户帐户,配置网络与 sshd……一路顺畅无比,十分痛快,不再赘述。
然后使用 ssh 客户端(推荐 PuTTy,它还支持手机塞班操作系统)连接到服务器,验明正身:
svn# uname -a
FreeBSD svn.xx.xxxx.com 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May 1 07:18:07 UTC 2009 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64
接着下载 wget 并安装:
svn# mkdir -p /home/work/src/
svn# cd /home/work/src/
svn# fetch http://ftp.gnu.org/gnu/wget/wget-1.12.tar.gz
svn# tar -xzf wget-1.12.tar.gz
svn# cd wget-1.12.tar.gz
svn# ./configure
svn# make
svn# make install
svn# rehash
然后下载需要的其他安装包,并解压:
svn# cd /home/work/src/
svn# wget -c http://xmlsoft.org/sources/libxml2-2.7.7.tar.gz
svn# wget -c "http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz?use_mirror=cdnetworks-kr-2"
svn# wget -c http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz
svn# wget -c http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.gz
svn# tar -xzf libxml2-2.7.7.tar.gz
svn# tar -xzf expat-2.0.1.tar.gz
svn# tar -xzf subversion-1.6.11.tar.gz
svn# tar -xzf subversion-deps-1.6.11.tar.gz
安装 libxml:
svn# cd /home/work/src/libxml2-2.7.7/
svn# ./configure
svn# make
svn# make install
安装 expat:
svn# cd /home/work/src/expat-2.0.1/
svn# ./configure
svn# make
svn# make install
然后:
ln -s /usr/local/lib/libexpat.so /usr/lib/libexpat.so
进入 subversion 目录,逐个安装依赖包的组件:
svn# cd /home/work/src/subversion-1.6.11/
svn# cd apr
svn# ./configure --prefix=/usr/local/apr LDFLAGS="-L/lib64"
svn# make
svn# make install
svn# cd ../apr-util
svn# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ LDFLAGS="-L/lib64"
svn# make
svn# make install
svn# cd ../zlib
svn# ./configure
svn# make
svn# make install
之前一直安装 serf,方法:
svn# cd ../serf
svn# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ LDFLAGS="-L/lib64"
svn# make
svn# make install
无奈它死活就是报错:
/usr/lib/crt1.o(.text+0x8a): In function `_start':
: undefined reference to `main'
*** Error code 1
Stop in /usr/home/work/src/subversion-1.6.11/serf.
结果 Google 了好几天,看了 N 篇老外的帖子,发现如果不搭配 Apache 使用,这个组件可以不安装……
然后 neon 也可以不安装。下面的安装方式或许会报错:
svn# cd ../neon
svn# ./configure --enable-shared --enable-ssl LDFLAGS="-L/lib64"
svn# make
svn# make install
其实这个 sqlite 也可以不安装:
svn# cd ../sqlite-amalgamation
svn# ./configure --prefix=/usr/local/sqlite
svn# make
svn# make install
记得不要写到 Subversion 的编译参数里面。“--without-sqlite”也不行,会报错。
最后可以安装 Subversion 了:
svn# cd ..
svn# ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-ssl --with-zlib=/usr/lib --without-serf --without-berkeley-db --enable-maintainer-mode LDFLAGS="-L/lib64"
svn# make
svn# make install
如果不安装前面的 expat,会报错:
/usr/bin/ld: cannot find -lexpat
*** Error code 1
Stop in /usr/home/work/src/subversion-1.6.11.
安装到此结束,如果没有意外报错的话——恭喜你,可以自恋一下了:
svn# /usr/local/subversion/bin/svnserve --version
svnserve, version 1.6.11 (r934486)
compiled May 12 2010, 04:25:34
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.
启动方式就不多说了,手册上写得非常清楚。需要智能化脚本的,也可以 Google 到。
部署结束,感谢收看。