在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值