淺析Subversion升級問題
隨著Subversion版本的更新,Subversion升級問題已經(jīng)呈現(xiàn)在大家的眼前,那么怎么升級Subversion呢,在這里發(fā)表一下個人的見解,希望對大家有所幫助。
在我的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發(fā)現(xiàn)它們果然使用了不同的libapr,前者是用的操作系統(tǒng)自帶的,后者用的Subversion軟件包自己的。
APR的全稱是ApachePortableRuntime,用過mod_perl或ApacheAPI編程的應(yīng)該很清楚這個。它提供一個抽象的操作系統(tǒng)級服務(wù),例如文件和網(wǎng)絡(luò)IO、內(nèi)存管理等。它也包含了一些實用函數(shù)例如哈希表、校驗和、參數(shù)處理等。盡管APR最開始是為pache服務(wù)器開發(fā)的,但已發(fā)展成為一個標準庫,被Subversion和其他網(wǎng)絡(luò)產(chǎn)品所使用,為軟件跨平臺運行提供方便。于是重新編譯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
關(guān)鍵之處是第4步和第5步里,都使用--with-apr和--with-apr-util指定了同一個apr安裝目錄。
再次啟動Apache,一切OK。
這次升級才發(fā)現(xiàn)Subversion在今年2月已變成了Apache的子項目,這是一件好事。一是因為Apache項目的代碼質(zhì)量控制得很好,二是Apache項目的文檔都很完美。有一本關(guān)于Subversion的自由圖書:Subversion與版本控制,主頁在: http://svnbook.red-bean.com/">http://svnbook.red-bean.com/。本文介紹Subversion升級完畢,對你有啟示嗎?歡迎關(guān)注本文的其他相關(guān)報道。
【編輯推薦】