按需卸载旧版本和旧依赖
apt purge subversion -y
mv /usr/sbin/svn /usr/sbin/svn.bak
mv /usr/bin/svn /usr/bin/svn.bak
mv /usr/local/bin/svn /usr/local/bin/svn.bak
rm -rf /usr/local/svn -rf
rm -rf /tmp/svn/src/*
rm /usr/local/lib/libserf-*
安装步骤
# 1. 创建临时文件夹用于存放安装时下载的文件和依赖
mkdir -p /tmp/svn/src
# 2. 安装相关依赖
apt install gcc g++ make zlib* unzip openssl libssl-dev python python-dev python-openssl -y
# 3. 下载相关源文件
wget -P /tmp/svn/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.14.0.tar.gz
wget -P /tmp/svn/src/ https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
wget -P /tmp/svn/src/ https://mirrors.bfsu.edu.cn/apache//apr/apr-1.7.0.tar.gz
wget -P /tmp/svn/src/ https://mirrors.bfsu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
wget -P /tmp/svn/src/ https://www.sqlite.org/2020/sqlite-amalgamation-3340000.zip
wget -P /tmp/svn/src/ http://prdownloads.sourceforge.net/scons/scons-3.0.1.tar.gz
wget -P /tmp/svn/src/ https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2
wget -P /tmp/svn/src/ https://www.openssl.org/source/openssl-1.1.1i.tar.gz
wget -P /tmp/svn/src/ https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.46.tar.gz
# 4. 安装apr
tar zxf /tmp/svn/src/apr-1.7.0.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/apr-1.7.0
./configure --prefix=/usr/local/apr
make -j 4 && make install
# 5. 安装apr-util
tar zxf /tmp/svn/src/apr-util-1.6.1.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make -j 4 && make install
# 6. 安装pcre
tar zxf /tmp/svn/src/pcre-8.44.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/pcre-8.44
./configure --prefix=/usr/local/pcre
make -j 4 && make install
# 7. 安装serf
# 7.1 安装scons (serf需要scons来编译安装)
tar zxf /tmp/svn/src/scons-3.0.1.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/scons-3.0.1
python setup.py install --prefix=/usr/local/scons
# 这里试过用最新版的4.0.1, 但安装时会报错,具体原因没有深究,有清楚的小伙伴也可以留言给我科普一下
# 有小伙伴科普了4.0.1需要python的版本为3.+
# 7.2. 安装serf
tar xf /tmp/svn/src/serf-1.3.9.tar.bz2 -C /tmp/svn/src/
cd /tmp/svn/src/serf-1.3.9
/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/
# 8. 安装openssl
tar xf /tmp/svn/src/openssl-1.1.1i.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/openssl-1.1.1i
./config --prefix=/usr/local/openssl
make -j 4 && make install
# 9. 安装httpd
tar xf /tmp/svn/src/httpd-2.4.46.tar.gz -C /tmp/svn/src/
cd /tmp/svn/src/httpd-2.4.46
./configure --prefix=/usr/local/apache2 --with-apr-util=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-openssl=/usr/local/openssl --with-pcre=/usr/local/pcre
make -j 4 && make install
# 10. 安装svn
tar zxf /tmp/svn/src/subversion-1.14.0.tar.gz -C /tmp/svn/src/
unzip /tmp/svn/src/sqlite-amalgamation-3340000.zip -d /tmp/svn/src/
cd /tmp/svn/src/subversion-1.14.0
/tmp/svn/src/subversion-1.14.0/get-deps.sh
mkdir -p /tmp/svn/src/subversion-1.14.0/sqlite-amalgamation
cp /tmp/svn/src/sqlite-amalgamation-3340000/* /tmp/svn/src/subversion-1.14.0/sqlite-amalgamation/
./configure --prefix=/usr/local/svn --without-berkeley-db --with-utf8proc=internal --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-serf=/usr/local/serf --with-lz4=internal --with-apxs=/usr/local/apache2/bin/apxs
# --with-apxs=/usr/local/apache2/bin/apxs 会在/usr/local/svn/libexec生成mod_dav_svn.so文件,以及mod_authz_svn.so文件
make -j 4 && make install
ln -s /usr/local/svn/bin/svn /usr/bin/svn
# 11. 查看svn版本
svn --version
# 12. 安装成功后删除之前下载和解压的临时文件
rm -rf /tmp/svn/src/*
其他问题
-
svnadmin: command not found
svn成功安装后, 输入svn --help
, 控制台有对应输出, 但输入svnadmin --help
无对应输出
ln -s /usr/local/svn/bin/svnadmin /usr/bin/svnamdin
-
如果执行报以下错误, 需要手动把libserf-1.so.1拷贝到svn安装目录下的lib文件夹内
cp /tmp/svn/src/serf-1.3.9/libserf-1.so.1 /usr/local/svn/lib
-
scons版本过高会出现下面这个问题,这里没有深究为什么会报错,只是简单地把scons的版本降到了3.0.1
相关链接
subversion下载页
pcre下载页
apr和apr-util下载页
sqlite-amalgamation下载页
scons下载页
serf下载页
openssl下载页
httpd下载页