zoukankan      html  css  js  c++  java
  • 【Python】python2.7安装pysvn

    wget最新的版本地址自己修改

    1、编译安装apr、apr-util
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.5.2.tar.gz
    ./configure --prefix=/usr/local/apr
    make & make install
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.5.4.tar.gz
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    make & make install

    2、如果没有安装scons和serf需要安装,否则会报错

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    pysvn._pysvn_2_7.ClientError: Unrecognized URL scheme for 'https://svn.xxx/'

    参考:http://blog.uouo123.com/post/402.html

    原因在svn1.8版本之前按照原来的安装方法是可以加载到dav的模块,但是,1.8版本以后,需要serf软件包支持访问 http 协议的版本库,不然就会报错.   serf需要用scons来编译安装,所以先安装下scons

    wget   http://pkgs.fedoraproject.org/repo/pkgs/scons/scons-2.3.6.tar.gz/9c6a1c3c716cbe5f16515f163c91d928/scons-2.3.6.tar.gz
    tar -zxvf scons-2.3.6
    cd scons-2.3.6
    /usr/local/bin/python2.7 setup.py install

    wget https://archive.apache.org/dist/serf/serf-1.3.8.zip
    unzip serf-1.3.8.zip
    cd serf-1.3.8
    ln -s /usr/local/apr/bin/apr-1-config /usr/bin/apr-1-config
    ln -s /usr/local/apr-util/bin/apu-1-config /usr/bin/apu-1-config
    scons PREFIX=/usr/local/serf
    scons install
    scons -c


    3、编译安装sqlite
    wget http://www.sqlite.org/2016/sqlite-autoconf-3110100.tar.gz
    ./configure --prefix=/usr/local/sqlite3
    make && make install

    指定路径可以避免svn安装时候出现与原环境sqlite版本冲突的问题:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    pysvn._pysvn_2_7.ClientError: Couldn't perform atomic initialization
    SQLite compiled for 3.11.1, but running with 3.6.20


    4、编译安装subversion :
    参考:https://teddysun.com/243.html (这里编译安装)
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.9.3.tar.gz
    ./configure  --with-serf=/usr/local/serf --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite3/
     make && make install

    4、编译安装pysvn:
    wget http://tigris.org/files/documents/1233/49465/pysvn-1.8.0.tar.gz
    cd pysvn-1.8.0/Source
    /usr/local/bin/python2.7 setup.py configure --svn-bin-dir=/usr/local/subversion/bin --svn-inc-dir=/usr/local/subversion/include/subversion-1/ --svn-lib-dir=/usr/local/subversion/lib/ --apu-inc-dir=/usr/local/apr-util/include/apr-1/ --apr-inc-dir=/usr/local/apr/include/apr-1/ --apr-lib-dir=/usr/local/apr/lib/
    make
    编译完在Source路径下会生成pysvn
    cp -r pysvn /你的python2.7路径/python2.7/site-packages/

    5、安装完测试报错:

    >>> import pysvn 
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "pysvn/__init__.py", line 116, in <module>
        raise ImportError( 'pysvn was built against newer (svn, apr, etc.) libraries then the ones installed on this system. %s' % str(e) )
    ImportError: pysvn was built against newer (svn, apr, etc.) libraries then the ones installed on this system. /usr/local/subversion/lib/libsvn_delta-1.so.0: undefined symbol: apr_hash_this_key

    分别执行ldd查看引用差异:

    ldd /usr/local/subversion/lib/libsvn_delta-1.so.0
    ldd pysvn/_pysvn_2_7.so

    [root@test1 ~]# ldd /usr/local/subversion/lib/libsvn_delta-1.so.0
            linux-vdso.so.1 =>  (0x00007fff2e747000)
            libsvn_subr-1.so.0 => /usr/local/subversion/lib/libsvn_subr-1.so.0 (0x00007f1960ec9000)
            libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x00007f1960c2e000)
            libaprutil-1.so.0 => /usr/local/apr-util/lib/libaprutil-1.so.0 (0x00007f1960a09000)
            libexpat.so.0 => /usr/local/apr-util/lib/libexpat.so.0 (0x00007f19607e2000)
            libapr-1.so.0 => /usr/local/apr/lib/libapr-1.so.0 (0x00007f19605ae000)
            librt.so.1 => /lib64/librt.so.1 (0x00007f19603a6000)
            libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f196016f000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f195ff51000)
            libz.so.1 => /lib64/libz.so.1 (0x00007f195fd3b000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f195f9a7000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f195f7a2000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003510000000)
            libfreebl3.so => /lib64/libfreebl3.so (0x00007f195f52b000)
    
    [root@test1 ~]# ldd /usr/local/lib/python2.7/site-packages/pysvn/_pysvn_2_7.so 
            linux-vdso.so.1 =>  (0x00007fff154b6000)
            libsvn_client-1.so.0 => /usr/local/subversion/lib/libsvn_client-1.so.0 (0x00007f7eab298000)
            libsvn_repos-1.so.0 => /usr/local/subversion/lib/libsvn_repos-1.so.0 (0x00007f7eab060000)
            libsvn_wc-1.so.0 => /usr/local/subversion/lib/libsvn_wc-1.so.0 (0x00007f7eaada9000)
            libsvn_fs-1.so.0 => /usr/local/subversion/lib/libsvn_fs-1.so.0 (0x00007f7eaab9e000)
            libsvn_subr-1.so.0 => /usr/local/subversion/lib/libsvn_subr-1.so.0 (0x00007f7eaa878000)
            libsvn_diff-1.so.0 => /usr/local/subversion/lib/libsvn_diff-1.so.0 (0x00007f7eaa662000)
            libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00007f7eaa42b000)
            libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7eaa124000)
            libm.so.6 => /lib64/libm.so.6 (0x00007f7ea9ea0000)
            libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7ea9c8a000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f7ea98f5000)
            libsvn_ra-1.so.0 => /usr/local/subversion/lib/libsvn_ra-1.so.0 (0x00007f7ea96e8000)
            libsvn_ra_local-1.so.0 => /usr/local/subversion/lib/libsvn_ra_local-1.so.0 (0x00007f7ea94de000)
            libsvn_fs_fs-1.so.0 => /usr/local/subversion/lib/libsvn_fs_fs-1.so.0 (0x00007f7ea928e000)
            libsvn_fs_x-1.so.0 => /usr/local/subversion/lib/libsvn_fs_x-1.so.0 (0x00007f7ea903b000)
            libsvn_fs_util-1.so.0 => /usr/local/subversion/lib/libsvn_fs_util-1.so.0 (0x00007f7ea8e39000)
            libsvn_ra_svn-1.so.0 => /usr/local/subversion/lib/libsvn_ra_svn-1.so.0 (0x00007f7ea8c1b000)
            libsvn_delta-1.so.0 => /usr/local/subversion/lib/libsvn_delta-1.so.0 (0x00007f7ea8a09000)
            libz.so.1 => /lib64/libz.so.1 (0x00007f7ea87f3000)
            libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x00007f7ea8563000)
            libaprutil-1.so.0 => /usr/local/apr-util/lib/libaprutil-1.so.0 (0x00007f7ea833e000)
            libexpat.so.0 => /usr/local/apr-util/lib/libexpat.so.0 (0x00007f7ea8117000)
            librt.so.1 => /lib64/librt.so.1 (0x00007f7ea7f0e000)
            libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f7ea7cd7000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7ea7aba000)
            libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f7ea78b5000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003510000000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f7ea76b0000)
            libfreebl3.so => /lib64/libfreebl3.so (0x00007f7ea7439000)


    apr文件差异:

    _pysvn_2_7.so              libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00007f7eaa42b000)
    libsvn_delta-1.so.0        libapr-1.so.0 => /usr/local/apr/lib/libapr-1.so.0 (0x00007f19605ae000)

    备份/usr/lib64/libapr*

    用编译完的apr/lib和apr-util/lib下的类文件替换/usr/lib64/下的原libapr*

    pysvn报下面错误,需要在本地先用svn命令checkout,有个选项“p”,然后输入账号密码

    pysvn._pysvn_2_7.ClientError: callback_ssl_server_trust_prompt required

    svn报:

    svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or directory

    ln -s /usr/local/serf/lib/libserf-1.so.1 /usr/lib64/libserf-1.so.1

  • 相关阅读:
    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
    ptconfigdiff的使用
    freebsd上安装sudo
    vm9.02的序列号
    pttablechecksum
    "Makefile", line 3: Need an operator
    nc的使用
    vs2005自带的水晶报表破解方法
    [vs2008环境]绑定水晶报表的两种方式(Pull和Push)
    .NET环境下水晶报表使用总结
  • 原文地址:https://www.cnblogs.com/jiangxu67/p/5291823.html
Copyright © 2011-2022 走看看