在RedHat9.0下安裝Subversion 1.4.2

使用了多年的CVS,苦來酸甜都嚐遍。一直垂涎subversion,卻沒有機會。而今機緣巧合得以在部門內推廣subversion, 不亦悅乎。

因部門開發需要使用RedHat9.0,服務器一直使用這個版本的linux沒有升級。9.0自帶的subversion版本太低(0.17.1),需要升級到1.4.2。本人較懶,不願意從源代碼安裝subversion(一堆編譯選項,安裝位置等等的選擇,甚煩)。好在subersion的fans已經爲咱做了準備,有現成的rpm包可以使用。不過天下也沒免費的午餐,小小問題還是要自己動手解決的 : )

1. 獲取subersion的red hat 9.0的rpm包。
    從http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/redhat-9.0/bin/ 這裏獲取現成的rpm包。每個包只取最高版本的即可。

2. 卸載9.0自帶的包
    rpm -e subversion-devel subversion
    rpm -e mod_auth_mysql mod_auth_pgsql
   注意: 後兩個apahce的模塊,在我們拿到的rpm包裏沒有更新的版本可用。本人的工作不會涉及到使用這兩個包的情況,沒有去找更新的包來安裝。

3. 安裝和升級下載的rpm包。
    9.0自帶的使用rpm -Uvh 命令升級,其餘的可以使用rpm -ivh安裝。升級httpd時,需要把幾個相關的mod放在一條命令裏一起升級。否則會報幾個httpd-mmn的依賴問題。可以參考:
    http://www.redhat.com/archives/shrike-list/2003-May/msg00724.html

4. 配置subversion
    1)創建svn倉庫
          svnadmin create --fs-type fsfs /path/to/your/repos

    2)import一個project
          建立project的目錄結構並導入:
          svn import --message "Initial import" myproj file:///path/to/your/repos/myproj

    3)配置subversion的web訪問
          在/etc/httpd/conf.d下有一個subversion.conf文件,去掉其中的註釋,稍作修改即可爲我所用:
          # Needed to do Subversion Apache server.
          LoadModule dav_svn_module     modules/mod_dav_svn.so

          # Only needed if you decide to do "per-directory" access control.
          LoadModule authz_svn_module   modules/mod_authz_svn.so

        #
        # Settings for Subversion Repository
        #
        <Location /repos>
            DAV svn
            SVNPath /path/to/your/repos
            AuthzSVNAccessFile /path/to/your/repos/svn-authz-access
            AuthType Digest
            AuthName "Subversion"
            AuthDigestDomain /repos/
            AuthDigestFile /path/to/your/repos/svn-auth-file
            Require valid-user
        </Location>

        設置目錄訪問權限,首先設爲我自己可用,其餘人只讀,做個測試。
        svn-authz-access:
        [/]
        * = r
        linuxnewer = rw
      
        設置digest方式的用戶名密碼
        htdigest -c /path/to/your/repos/svn-auth-file Subversion linuxnewer


OK.至此安裝和配置已經完成,啓動http服務試驗一下。
    /etc/rc.d/init.d/httpd start
web瀏覽器訪問正常,大喜。
用命令行訪問:
   svn co http://localhost/repos/myproj
輸入用戶名,密碼,結果抱錯:
   svn: REPORT 請求 “/repos/!svn/vcc/default”失敗
   svn: Not authorized to open root of edit operation
看來還用費點兒功夫。

6. 解決最後的問題
    google一下出錯信息,蛛絲馬跡頗多,仔細尋找發現是digest模塊的問題,且該問題已被提交到apchace的bug track系統。好,上去查查,發現:
            http://issues.apache.org/bugzilla/show_bug.cgi?id=25040
裏面有一個digest模塊的patch,喜出望外。

    從http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/redhat-9.0/src/取回httpd的源碼包,安裝rpm -ivh。
    把找到的patch放在/usr/src/redhat/SOURCES下,命名爲httpd-2.0.48-digest.patch。
    修改spec文件:在/usr/src/redhat/SPEC/httpd.spec中添加
              Patch37: httpd-2.0.48-digest.patch
              %patch37 -p1 -b .digest
具體的位置,參考原spec文件,和相關的內容放在一起就可以了。

    編譯,rpmbuild -bc。成功。
    把/usr/src/redhat/BUILD/httpd-2.0.48/worker/modules/aaa/.libs/mod_auth_digest.so拷貝到/usr/lib/httpd/modules下覆蓋原文件。
    重起http服務,web頁面訪問OK,命令行訪問OK。狂喜。

7. 與此問題相關的一些鏈接
     http://issues.apache.org/bugzilla/show_bug.cgi?id=25040
     http://subversion.tigris.org/issues/show_bug.cgi?id=1608
     http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=50861
     http://subversion.tigris.org/faq.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章