美文网首页Linux我用 LinuxLinux学习|Gentoo/Arch/FreeBSD
Linux 服务器(CentOS7)安装 Python-3.7.

Linux 服务器(CentOS7)安装 Python-3.7.

作者: AptX395 | 来源:发表于2020-04-08 13:30 被阅读0次

    本文已经发布在我的个人网站上啦,欢迎访问


    安装 Python-3.7.5

    前期准备

    • 下载并解压 Python-3.7.5 的源码包:

      wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz
      tar -Jxvf Python-3.7.5.tar.xz
      
    • 通过 yum 安装依赖:

      yum install -y openssl openssl-devel libffi-devel openssh bzip2-devel expat-devel gdbm-devel sqlite-devel
      

      注意:第三个包 libffi-devel 一定要安装,否则在 make install 时会报错:ModuleNotFoundError: No module named '_ctypes'

    编译安装

    1. 进入源码包目录后执行编译安装:

      ./configure --prefix=/usr/local/python37 --enable-optimizations
      make
      make install
      
    2. 建立软链接:

      ln -s /usr/local/python37/bin/python3.7 /usr/bin/python37
      

    验证安装

    python37 --version
    

    安装 Subversion-1.12.2

    前期准备

    • 下载并解压 Subversion-1.12.2 以及各个依赖的源码包:

      wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.12.2.tar.gz
      wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz
      wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
      wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
      wget https://github.com/JuliaStrings/utf8proc/archive/v2.4.0.tar.gz
      wget https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2
      wget https://nchc.dl.sourceforge.net/project/scons/scons/3.1.0/scons-3.1.0.tar.gz
      tar -zxvf subversion-1.12.2.tar.gz
      tar -zxvf apr-1.7.0.tar.gz
      tar -zxvf apr-util-1.6.1.tar.gz
      tar -zxvf sqlite-autoconf-3300100.tar.gz
      tar -zxvf v2.4.0.tar.gz
      tar -jxvf serf-1.3.9.tar.bz2
      tar -zxvf scons-3.1.0.tar.gz
      
    • 通过 yum 安装依赖:

      yum install -y httpd-devel.x86_64 zlib zlib-devel openssl openssl-devel unzip openssh-clients gcc gcc-c++ expat-devel
      

    安装其他依赖

    1. 进入 apr-1.7.0 源码包目录后执行编译:

      ./configure --prefix=/usr/local/apr
      make
      make install
      
    2. 进入 apr-util-1.6.1 源码包目录后执行编译:

      ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
      make
      make install
      
    3. 进入 scons-3.1.0 源码包目录后执行编译:

      注意:编译安装 scons 需要系统环境变量 python 默认调用 Python2

      python setup.py install --prefix=/usr/local/scons
      
    4. 进入 serf-1.3.9 源码包目录后执行编译:

      注意:编译 serf 需要使用上一步中安装的 scons

      /usr/local/scons/bin/scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util
      /usr/local/scons/bin/scons install
      cp /usr/local/serf/lib/libserf-1.so* /usr/local/lib
      
    5. 进入 sqlite-autoconf-3300100 源码包目录后执行编译:

      ./configure --prefix=/usr/local/sqlite
      make
      make install
      
    6. 进入 utf8proc-2.4.0 源码包目录后执行编译:

      make
      make install
      

    编译安装

    1. 进入 subversion-1.12.2 源码包目录后执行编译:

      如果报了 httpd 相关的错误,一定要加上 --enable-apache-whitelist=2.4.6--enable-broken-httpd-auth 这两个参数,其中的 2.4.6httpd 的版本。

      ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-serf=/usr/local/serf --with-sqlite=/usr/local/sqlite --with-zlib --with-lz4 --with-uft8proc --enable-maintainer-mode --enable-mod-activation --enable-apache-whitelist=2.4.6 --enable-broken-httpd-auth
      make
      make install
      
    2. 卸载系统上的旧版本 Subversion

      yum remove subversion
      
    3. 建立软链接:

      ln -s /usr/local/subversion/bin/svn /usr/bin/svn
      

    验证安装

    svn --version
    svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director
    
    1. 配置库文件:

      cd /etc/ld.so.conf.d
      vim user-libs.conf
      # 写入 /usr/local/lib 并保存退出
      ldconfig
      
    2. 验证安装:

      svn --version
      

      正常执行,无报错。

    安装 PySVN-1.9.10

    前期准备

    下载并解压 PySVN-1.9.10 的源码包:

    wget https://jaist.dl.sourceforge.net/project/pysvn/pysvn/V1.9.10/pysvn-1.9.10.tar.gz
    tar -zxvf pysvn-1.9.10.tar.gz
    

    编译安装

    1. 将系统环境变量 python 配置为默认调用 Python-3.7.5

      mv /usr/bin/python /usr/bin/python.bak
      ln -s /usr/local/python37/bin/python3.7 /usr/bin/python
      
    2. 进入 pysvn-1.9.10 源码包目录下的 Source 目录并执行编译:

      python ./setup.py configure --pycxx-dir=../Import/pycxx-7.1.3/ --svn-inc-dir=/usr/local/subversion/include/subversion-1/ --svn-lib-dir=/usr/local/subversion/lib/ --svn-bin-dir=/usr/local/subversion/bin/ --apr-inc-dir=/usr/local/apr/include/apr-1/ --apr-lib-dir=/usr/local/apr/lib/  --apu-inc-dir=/usr/local/apr-util/include/apr-1/
      make
      
    3. 将编译生成的 pysvn 目录下的模块文件复制到 Python-3.7.5site-packages 里面:

      cp -r pysvn /usr/local/python37/lib/python3.7/site-packages/
      

    验证安装

    python
    >>> import pysvn
    Traceback (most recent call last):
      File "/data/home/jerrywjdeng/Downloads/pysvn-1.9.10/Source/pysvn/__init__.py", line 112, in <module>
        import pysvn._pysvn_3_7
    ImportError: /usr/local/apr-util/lib/libaprutil-1.so.0: undefined symbol: apr_allocator_align
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/data/home/jerrywjdeng/Downloads/pysvn-1.9.10/Source/pysvn/__init__.py", line 122, 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/apr-util/lib/libaprutil-1.so.0: undefined symbol: apr_allocator_align
    
    1. 分别执行 ldd 查看引用差异:

      ldd /usr/local/python37/lib/python3.7/site-packages/pysvn/_pysvn_3_7.so
      ldd /usr/local/subversion/lib/libsvn_delta-1.so.0
      
    2. 对比发现 apr 文件有差异:

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

      cd /lib64
      mv libapr-1.so.0 libapr-1.so.0.bak
      mv libapr-1.la libapr-1.la.bak
      mv libapr-1.so libapr-1.so.bak
      mv libapr-1.so.0.4.8 libapr-1.so.0.4.8.bak
      
    4. /usr/local/apr/lib/ 下的类文件替换 /lib64/ 下的原 libapr*

      cd /usr/local/apr/lib
      cp libapr-1.la /lib64/
      cp libapr-1.so.0.7.0 /lib64/
      cd /lib64
      ln -s libapr-1.so.0.7.0 libapr-1.so.0
      ln -s libapr-1.so.0.7.0 libapr-1.so
      
    5. 验证安装:

      python
      >>> import pysvn
      >>> client = pysvn.Client()
      

      正常执行,无报错。


    相关文章

      网友评论

        本文标题:Linux 服务器(CentOS7)安装 Python-3.7.

        本文链接:https://www.haomeiwen.com/subject/eqctmhtx.html