centos 安装 subversion1.8及更高版本


前言

一般而言,各发行版系统中内置的软件包都不是最新的,所以使用默认 yum 进行安装 subversion 时,安装的大多数都为低版本(1.7.X)。然而,在某些情况下,我们必须要使用高版本,此时我们可以使用以下两种方法进行高版本的安装。两种安装方式各有优缺点

yum 安装(适用于网络环境OK、所需版本在 yum 仓库中存在情况下)

  1. 先在 http://opensource.wandisco.com/centos/ 查找出自己需要使用的源,比如我需要使用的就是 http://opensource.wandisco.com/centos/7/svn-1.11/RPMS/x86_64/

    注意:有一些版本源里面也是没有的,需要自己去检查一下是否存在,比如 http://opensource.wandisco.com/centos/7/ 目录下最高版本就是 1.11,其它高版本目录下内容为空

  2. 在服务器上新增一个 yum 仓库地址: vi /etc/yum.repos.d/wandisco-svn.repo 内容如下:

    [WandiscoSVN]
    name=Wandisco SVN Repo
    baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.11/RPMS/$basearch/
    enabled=1
    gpgcheck=0
    

    其中 $releasever 表示当前系统的发行版本,可通过rpm -qi centos-release命令查看,内容如下:

    其中 $basearch 表示当前系统硬件架构(CPU指令集),可通过arch命令查看,内容如下:

  3. 安装

     yum clean all
     yum makecache
     yum install subversion
    
  4. 验证

    svn --version
    

源码安装(适用于所有新版本,依赖多,需考虑依赖版本问题)

  1. 官网源码编译安装介绍 https://svn.apache.org/repos/asf/subversion/trunk/INSTALL
  2. 依赖下载,所需依赖可以通过下载源码包之后,目录里面有一个 get-deps.sh 的脚本,从中分析可以得到所需要的依赖、版本以及其下载地址
    • bzip2-1.0.6 解压 serf 安装包时需要
    • apr-1.5.0
    • apr-util-1.5.1
    • Python-3.9.1
    • scons-3.0.1
    • zlib-1.2.8
    • openssl-1.1.1h
    • serf-1.3.9
    • sqlite-3.8.11.1
    • subversion-1.14.0
  3. 依赖安装(提供一个百度云下载地址 链接:https://pan.baidu.com/s/1GKXkr86J-jle5FZJFaCq9w 提取码:cq5u )
    • 安装 bzip2

      tar -zxvf bzip2-1.0.6.tar.gz
      cd bzip2-1.0.6
      make && make install 
      
    • 安装 apr

       tar -zxvf apr-1.5.0.tar.gz 
       cd apr-1.5.0
       ./configure --prefix=/opt/apr 
       make && make install  
      
    • 安装 apr-util (依赖于前面安装的 apr)

       tar -zxvf apr-util-1.5.1.tar.gz
       cd apr-util-1.5.1
       ./configure --prefix=/opt/apr-util --with-apr=/opt/apr 
       make && make install   
      
    • 安装 python3

      yum install libffi-devel -y
      tar -zxvf Python-3.9.1.tgz
      cd Python-3.9.1
      ./configure --prefix=/opt/python3
      make && make install   
      
    • 安装 scons(依赖于下面安装的 python3)

      tar -xzvf scons-3.0.1.tar.gz
      cd scons-3.0.1
      ../python3/bin/python3 setup.py install --prefix=/opt/scons 
      
    • 安装 zlib

      tar -zxvf zlib-1.2.8.tar.gz
      cd  zlib-1.2.8
      ./configure
      make && make install 
      
    • 安装 openssl

      tar -zxvf openssl-1.1.1h.tar.gz
      cd openssl-1.1.1h
      ./config shared zlib  --prefix=/opt/openssl 
      make && make install  
      
      
    • 安装 serf

      bzip2 -dc serf-1.3.9.tar.bz2 | tar -xf - 
      cd serf-1.3.9
      ../scons/bin/scons PREFIX=/opt/serf APR=/opt/apr APU=/opt/apr-util OPENSSL=/opt/openssl
      ../scons/bin/scons install
      

      设置共享库 vi /etc/ld.so.conf,在文件中添加 serf 的lib路径:

      /opt/serf/lib
      

      执行 ldconfig

    • 安装 sqlite

      unzip -q sqlite-amalgamation-3081101.zip  
      
  4. subversion 安装
    tar -xzvf subversion-1.14.0.tar.gz
    mv sqlite-amalgamation-3081101 subversion-1.14.0/sqlite-amalgamation 
    cd subversion-1.14.0
    ./configure --prefix=/opt/subversion --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-zlib  --enable-maintainer-mode --with-serf=/opt/serf --enable-mod-activation --with-lz4=internal --with-lz4=internal --with-utf8proc=internal
    make && make install
    
    环境变量设置:在 vi /etc/profile 末尾增加以下内容:
    export SVNPATH=/opt/subversion/bin
    export PATH=$SVNPATH:$PATH:$HOME/bin   
    
    保存后执行 source /etc/profile
  5. 验证
    svn --version
    

可能碰到的问题

  1. configure: error: no acceptable C compiler found in $PATH
    原因:没有C编译器
    解决:yum -y install gcc
  2. zipimport.ZipImportError: can't decompress data; zlib not available
    原因:没有zip解压缩类库
    解决:yum -y install zlib*
  3. 安装 serf 的时候,出现 importlib.metadata.PackageNotFoundError: SCons;
    原因:最开始的时候,我下载的是 scons 最新版本,估计是版本问题,我也懒得去查原因了,所以将 scons 换成低版本 3.0.1,最好解决
    解决:将 scons 更换为低版本 3.0.1
  4. unzip: command not found
    解决:yum install unzip
  5. 安装openssl时报错,提示需要安装 You need Perl 5
    解决:安装 perl-5.28.0.tar.gz
     tar zxvf perl-5.28.0.tar.gz
     cd perl-5.28.0
     ./Configure -des -Dprefix=$HOME/localperl
     make
     make test
     make install     
    
  6. 安装 subversion 出现 ./svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or directory
    解决:需要将 serf 设置在共享库里之后从新编译安装: vi /etc/ld.so.conf 在文件中增加以下内容
    /opt/serf/lib   
    
    保持之后执行ldconfig,重新编译 subversion
  7. 安装 python3 的时候,make 的时候一直显示 checking for... ,进入死循环
    原因:系统时间的原因。如果系统时间比python的发布时间要早,make就会进入死循环
    解决:使用 date 命令重新设置一下系统时间就行了

参考文档:https://blog.csdn.net/baidu_36748884/article/details/81365398