如今的Apache Subversion安装依赖项很多。安装的时候需要注意不要遗漏。不过好在的是Subversion的源码包./configure会一一检测这些依赖项,如果当前系统缺少其中某些REQUIRED依赖项,那么会停止生成Makefile并给出相应的提示,如果是缺少OPTIONAL依赖项,那么也会给予相应的警告。
先列出Subversion一些REQUIRED依赖项
1.apr(Apache Portable Runtime)
2.apr-util(Apache Portable Runtime Utility)
3.SQLite
4.ZLib(大多数系统都自带了)
5.expat(FreeBSD没有自带,并且Subversion官方INSTALL文档没有给出任何说明,需要注意)
再列出这次安装我选择安装的OPTIONAL依赖项
1.BerkeleyDB
下面则是这次安装详细步骤
1.安装apr
tar -zxf apr-1.4.2.tar.bz2
cd apr-1.4.2
./configure
make & make install
直接搞定,注意默认安装的路径,一般是在/usr/local/apr/
2.安装apr-util
tar -zxf apr-util-1.3.10.tar.bz2
cd apr-util-1.3.10
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make & make install
这里是在apr安装之后的基础上,并用--with-apr指定apr的配置工具路径作为./configure的参数从而得到Makefile
3.安装SQLite
其实不用安装SQLite,只用解压出来就行了。到时候执行Subversion的./configure配置文件的时候需要用到SQLite包中的一个源文件sqlite3.c
4.安装expact
expact够标准的,安装三步曲即可
5.BerkeleyDB
tar
./configure
make & make install
安装也是三部曲,不过安装之后在FreeBSD这种unix系统上,有点区别,需要设置一下动态链接库。
最近版本的BerkeleyDB是5.1的,所以默认安装出来的目录是在
/usr/local/BerkeleyDB.5.1/,在其下的lib目录有相应的动态链接库文件so,Subversion的./configure文件执行时会来检测并连接到这些文件,不过./configure的参数如果设置的对的话,是能连接到这些文件的,可是当可执行文件执行是,ld是找不到这个目录下的so的,所以这也会导致./configure的检测返回false。即便在FreeBSD系统下用ldconfig来扫描这个文件夹下,也是不会加入任何项目到ldcofig的cache文件里的,这是因为BerkeleyDB默认安装的时候把这些so文件命名为类似libdb-5.1.so这种格式,这在Linux下是没有任何问题的,可以正确的被ldconfig检测到,并包含进它的cache中。可是在FreeBSD中ldconfig这种工具最原生的,就连参数和Linux下有所不同。在FreeBSD中只会在扫描到libdb-5.1.so.0这种在最后还有一个子版本号的数字才会包含进它的cache文件中。
所以这里需要做的一件事就是复制一个so文件,以新的格式名命名,并在/usr/local/BerkeleyDB-5.1/lib下建立一个符号链接,指向这个so文件,让编译的时候引用到这个符号链接文件,就相当于连接到了新复制出来的名字符合要求的so文件。并且这个新so文件能被ldconfig扫描到,这样编译出来的可执行文件就能够加载到该动态链接库。
cp libdb-5.1.so libdb-5.1.so.0
ln libdb.so libdb-5.1.so.0
并在/etc/ld-elf.conf中加入/usr/local/BerkeleyDB.5.1/lib这个路径,这样系统每次启动的时候就会自动来扫描这个路径下的so,而libdb-5.1.so.0这个so文件就被加入到ldconfig的cache文件中了。啊。真麻烦的一个步骤,我也纠结了很久。。干。。。。。
6.终于轮到Subversion了。前戏还真久啊。
tar -zxf subversion-1.6.13.tar.bz2
cd subversion-1.6.13
./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-apu=/usr/local/apr/bin/apu-1-config --with-sqlite=sqlite解压包所在的路径/sqlite3.c --with-berkeley-db=db.h:/usr/local/BerkeleyDB.5.1/include:/usr/local/BerkeleyDB.5.1/lib:db
注意一下--with-berkeley-db参数的格式,其意思是指用 /usr/local/BerkeleyDB.5.1/include这个路径下的db.h,并连接/usr/local/BerkeleyDB.5.1/lib下的libdb.so
上面的./configure正确执行后,生成了Makefile,下面的步骤不用我说也回了吧。。
make & make install
纠结了整整一个下午。终于算是在FreeBSD下安装好了,果然和Linux下不太一样。很多细节需要注意啊。。。