浅析Subversion升级问题
创始人
2024-07-01 01:20:26
0

随着Subversion版本的更新,Subversion升级问题已经呈现在大家的眼前,那么怎么升级Subversion呢,在这里发表一下个人的见解,希望对大家有所帮助。
在我的SlackwareLinux里,将Subversion从1.4.6升级到1.6.11,Apache使用最新的2.2.15版本,都从源码编译安装。

Subversion升级完后Apache启动不了,错误提示如下:

Cannotload/usr/local/apache2.2/modules/mod_dav_svn.sointoserver:/usr/local/apache2.2/modules/mod_dav_svn.so:undefinedsymbol:svn_log__updatem,很怀疑是Apache和Subversion使用了不兼容的libapr,在Subversion的INSTALL文件里如是说:
WerecommendusingthelatestApache.However,whateverversionyouchoose,you*must*ensurethatSubversionandApacheareusingthesameversionofAPR.Ifyoudon't,thingswillsegfaultandbreak.

ldd看一下:
ldd/usr/local/apache2.2/bin/httpd
ldd/usr/local/svn1.6/bin/svn发现它们果然使用了不同的libapr,前者是用的操作系统自带的,后者用的Subversion软件包自己的。

APR的全称是ApachePortableRuntime,用过mod_perl或ApacheAPI编程的应该很清楚这个。它提供一个抽象的操作系统级服务,例如文件和网络IO、内存管理等。它也包含了一些实用函数例如哈希表、校验和、参数处理等。尽管APR最开始是为pache服务器开发的,但已发展成为一个标准库,被Subversion和其他网络产品所使用,为软件跨平台运行提供方便。于是重新编译Apache和Subversion,让它们使用相同的libapr和libapr-util,过程如下:

1.解开Subversion-1.6.11.tar.bz2和Subversion-deps-1.6.11.tar.bz2(后者包含了apr和apr-util,以及其他Subversion依赖库例如SQLite等),得到同一个目录Subversion-1.6.11。

2.cdSubversion-1.6.11/apr;./configure;make&&makeinstall
安装apr,默认安装到/usr/local/apr目录。

3.cdSubversion-1.6.11/apr-util;./configure--with-apr=/usr/local/apr;make&&makeinstall
安装apr-util,默认安装到上述相同目录。

4.进入Apache的源代码目录,安装Apache:

./configure--prefix=/usr/local/apache2.2--enable-so--enable-dav\
--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr
make&&makeinstall

5.再次回到Subversion-1.6.11,安装Subversion升级:
./configure--prefix=/usr/local/svn1.6--with-apr=/usr/local/apr\
--with-apr-util=/usr/local/apr--with-apxs=/usr/local/apache2.2/bin/apxs
make&&makeinstall
关键之处是第4步和第5步里,都使用--with-apr和--with-apr-util指定了同一个apr安装目录。
再次启动Apache,一切OK。

这次升级才发现Subversion在今年2月已变成了Apache的子项目,这是一件好事。一是因为Apache项目的代码质量控制得很好,二是Apache项目的文档都很完美。有一本关于Subversion的自由图书:Subversion与版本控制,主页在: http://svnbook.red-bean.com/">http://svnbook.red-bean.com/。本文介绍Subversion升级完毕,对你有启示吗?欢迎关注本文的其他相关报道。
 

【编辑推荐】

  1. CentOS系统中安装subversion并使用svn+ssh访问
  2. 三大主流Subversion客户端初探
  3. 如何结合使用Subversion和Eclipse
  4. 七步搞定Subversion服务器在Ubuntu下的配置
  5. Subversion日期解析函数缓冲区溢出漏洞

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...