安装 svn 最新版本 1.10.x

SVN 的全称是 Subversion,即版本控制系统。它曾经是最流行的一个开放源代码的版本控制系统(现在肯定是 Git)。

Subversion 是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。

一、使用包管理器自动安装

官网提供了常见 Linux 发行版的安装命令,此处仅以 CentOSDebianUbuntu 为例进行说明,其它系统详见官网:https://subversion.apache.org/packages.html

⚠️ 注意:一般各发行版系统中内置的软件包都不是最新的,如果需要安装最新稳定版的 Subversion,请使用方法二中的源码安装。

  • CentOS

    ➜  yum install subversion
    ➜ yum install mod_dav_svn
  • Debian

    ➜  apt-get install subversion
    ➜ apt-get install libapache2-mod-svn
  • Ubuntu

    ➜  apt-get install subversion
    ➜ apt-get install libapache2-svn

二、源码编译安装

官网源码下载页:https://subversion.apache.org/download.cgi

最新稳定版(推荐) 上一稳定版
subversion-1.10.2.tar.bz2 subversion-1.9.9.tar.bz2
subversion-1.10.2.tar.gz subversion-1.9.9.tar.gz
subversion-1.10.2.zip subversion-1.9.9.zip

2.1 安装依赖

本文安装的最新 subversion-1.10.x 版本,需要安装依赖 aprapr-uti,官网下载地址在这里: http://apr.apache.org/download.cgi

低于当前最新版本的源码,可能还需要下面的基础依赖,请根据安装过程是否报错自行选择:

  • yum install -y zlib zlib-devel
  • yum install -y openssl openssl-devel
  • yum install -y expat-devel
  • yum install -y bzip2 解压 *.bz2 文件时需要用到。
  • sqlite-autoconf-3250100.tar.gz 在高版本的 Subversion 源码包中已内置。

另外,对于 v1.7 以下的版本,官方有直接提供依赖包的安装下载,比如:subversion-deps-1.6.12.tar.gzsubversion-1.6.12.tar.gz,直接进入 subversion-deps* 目录下安装所需依赖即可。

  • 安装 apr

    ➜  wget -c http://mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.gz
    ➜ tar -zxvf apr-1.6.5.tar.gz
    cd apr-1.6.5
    ➜ ./configure --prefix=/usr/local/apr
    ➜ make
    ➜ make install
  • 安装 apr-util

    ➜  wget -c http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
    ➜ tar -zxvf apr-util-1.6.1.tar.gz
    cd apr-util-1.6.1
    ➜ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    ➜ make
    ➜ make install

2.2. 安装 Subversion

下载、编译、安装

➜  wget -c http://mirrors.shu.edu.cn/apache/subversion/subversion-1.10.2.tar.gz
➜ tar -zxvf subversion-1.10.2.tar.gz
cd subversion-1.10.2
➜ ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-lz4=internal --with-utf8proc=internal
➜ make
➜ make install

其中:

  • --with-lz4=internal

    configure: error: Subversion requires LZ4 >= r129, or use --with-lz4=internal --with-serf=/usr/local/serf
  • --with-utf8proc=internal

    configure: error: Subversion requires UTF8PROC
  • --with-serf=/usr/local/serf 开启 HTTP 和 HTTPS 访问支持

    可能报错:configure: error: Serf was explicitly enabled but an appropriate version was not found.

    解决:

    # 使用 scons 编译、安装
    ➜ wget https://svwh.dl.sourceforge.net/project/scons/scons/2.3.3/scons-2.3.3.tar.gz
    ➜ tar xvf scons-2.3.3.tar.gz
    cd scons-2.3.3
    ➜ python setup.py install

    ➜ wget https://archive.apache.org/dist/serf/serf-1.3.9.tar.bz2
    ➜ tar xjvf serf-1.3.9.tar.bz2
    ➜ scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util
    ➜ scons install
    ➜ scons -c

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

    解决:

    cd /usr/local/subversion/lib
    ➜ cp /usr/local/serf/lib/libserf-1.so.1 ./

2.3. 添加环境变量

echo "export PATH=/usr/local/subversion/bin:$PATH" >> /etc/profile
source /etc/profile

2.4. 验证安装

➜  svn --version
➜ svnserve --version

当遇到下面的问题时:

➜  svn --version
svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LC_CTYPE is UTF-8
svn: warning: please check that your locale name is correct

修复

echo 'export LC_ALL=C' >> /etc/profile
source /etc/profile