在版本控制领域,Subversion(简称SVN)曾是一款占据主导地位的集中式版本控制系统,至今仍在许多企业和遗留项目中发挥着重要作用,对于仍在使用老旧系统如 CentOS 6.5 的服务器管理员或开发者来说,在其上部署 SVN 服务可能是一项必要的工作,由于 CentOS 6.5 已正式停止维护,其官方的 Yum 软件源也已失效,这给软件的下载和安装带来了不小的挑战,本文将详细介绍如何在 CentOS 6.5 系统上成功下载并安装 SVN,并提供两种主流方法:配置 Vault 源进行 Yum 安装,以及通过源码编译安装。

理解 CentOS 6.5 的安装困境
CentOS 6.5 发布于 2013 年,其生命周期(EOL, End-of-Life)已于 2020 年 11 月 30 日正式结束,这意味着官方不再为其提供任何安全更新、漏洞修复或技术支持,最直接的影响就是其原生的 Yum 仓库地址 mirror.centos.org 已无法访问,如果您直接执行 yum install subversion,系统会因找不到有效的软件源而报错,要解决这个问题,我们必须将 Yum 的源地址指向 CentOS 为归档历史版本而设立的 Vault 仓库。
配置 Vault 源进行 Yum 安装 (推荐)
这是最直接、最符合系统管理习惯的方法,通过修改 Yum 仓库配置文件,我们可以让 yum 命令重新“活”过来,从 Vault 仓库中获取所需的软件包。
第一步:备份原有的 Yum 仓库配置
在进行任何修改之前,备份原始文件是一个良好的习惯,执行以下命令:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:创建并编辑新的仓库配置文件
使用 vi 或 nano 编辑器创建一个新的 CentOS-Base.repo 文件:
vi /etc/yum.repos.d/CentOS-Base.repo
粘贴到文件中,这些配置将 base, updates, extras 等关键仓库指向了 Vault CentOS 6.5 的归档地址。
[base] name=CentOS-6.5 - Base baseurl=https://vault.centos.org/6.5/os/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [updates] name=CentOS-6.5 - Updates baseurl=https://vault.centos.org/6.5/updates/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [extras] name=CentOS-6.5 - Extras baseurl=https://vault.centos.org/6.5/extras/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [centosplus] name=CentOS-6.5 - Plus baseurl=https://vault.centos.org/6.5/centosplus/x86_64/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
保存并退出编辑器。
第三步:清理 Yum 缓存并安装 SVN
运行以下命令清理旧的 Yum 缓存,并生成新的缓存。
yum clean all
执行完毕后,您就可以像往常一样安装 SVN 了。

yum install subversion
系统会自动解析依赖关系,并从 Vault 仓库下载 SVN 及其所有依赖包(如 apr, apr-util, neon 等),安装过程中,按 y 确认即可。
源码编译安装
如果由于网络限制无法访问 Vault 仓库,或者您需要安装特定版本的 SVN,源码编译是一个可靠的备选方案,此方法更为复杂,需要手动处理所有依赖关系。
第一步:安装编译所需的依赖工具和库
安装“开发工具”包组以及 SVN 编译所必需的开发库。
| 依赖包 | 描述 |
|---|---|
| gcc | C 语言编译器 |
| make | 构建自动化工具 |
| openssl-devel | 提供SSL/TLS支持的库文件 |
| zlib-devel | 提供数据压缩功能的库文件 |
| apr-devel | Apache Portable Runtime 开发包 |
| apr-util-devel | APR 工具库开发包 |
| neon-devel | 提供WebDAV支持的HTTP客户端库 |
| sqlite-devel | SQLite 数据库开发包,SVN 后端存储之一 |
可以使用以下命令批量安装:
yum groupinstall "Development Tools" yum install openssl-devel zlib-devel apr-devel apr-util-devel neon-devel sqlite-devel
注意:此步依然需要可用的 Yum 源,Yum 完全不可用,您需要手动下载这些依赖包的 RPM 文件并使用 rpm 命令安装。
第二步:下载 SVN 源码
访问 Subversion 官方归档网站(https://archive.apache.org/dist/subversion/)下载您需要的版本的源码包,subversion-1.8.19.tar.gz。
wget https://archive.apache.org/dist/subversion/subversion-1.8.19.tar.gz tar -zxvf subversion-1.8.19.tar.gz cd subversion-1.8.19
第三步:配置、编译与安装
运行 configure 脚本来检查系统环境并生成 Makefile。
./configure --prefix=/usr/local/subversion
--prefix 参数指定了 SVN 的安装路径,配置成功后,执行编译和安装:

make make install
这个过程会相对耗时,具体取决于服务器的性能。
安装后基本配置与验证
无论通过哪种方式安装,验证和初步配置都是必不可少的。
-
验证安装:
svnserve --version
如果命令成功输出版本信息,则说明 SVN 已正确安装。
-
创建版本库:
mkdir -p /data/svnrepos/ svnadmin create /data/svnrepos/myproject
-
配置版本库: 进入
/data/svnrepos/myproject/conf目录,主要编辑三个文件:svnserve.conf: 设置访问权限,如anon-access = none,auth-access = write,password-db = passwd,authz-db = authz。passwd: 添加用户和密码,格式为username = password。authz: 配置用户组的读写权限。
-
启动 SVN 服务:
svnserve -d -r /data/svnrepos
-d表示后台运行,-r指定版本库的根目录,至此,一个基本的 SVN 服务已搭建完成。
相关问答FAQs
为什么我执行 yum install subversion 时,总是提示“Cannot find a valid baseurl for repo: base”?
解答:这个错误的根本原因是 CentOS 6.5 的生命周期已经结束,其官方的软件源镜像地址(mirrorlist 或 baseurl 中的 URL)已经失效或被移除。yum 工具无法从这些无效地址下载软件包信息,解决方法就是本文“方法一”中详述的步骤:手动修改 /etc/yum.repos.d/CentOS-Base.repo 文件,将其中的 baseurl 地址修改为 CentOS 为历史版本提供的 Vault 归档仓库地址 https://vault.centos.org/6.5/...,然后清理缓存 (yum clean all) 即可恢复 yum 的正常功能。
我已经成功安装了 SVN,但客户端无法连接到服务器,可能是什么原因? 解答:客户端连接失败通常涉及服务器端的几个层面,请按以下顺序排查:
- SVN 服务是否启动:在服务器上执行
ps aux | grep svnserve,检查svnserve进程是否在运行,如果没有,请使用svnserve -d -r /path/to/repos命令启动它。 - 防火墙设置:CentOS 6.5 默认使用
iptables作为防火墙,SVN 服务的默认端口是 3690,请执行iptables -L -n | grep 3690查看该端口是否已开放,如果未被允许,需要添加规则,如iptables -I INPUT -p tcp --dport 3690 -j ACCEPT,然后保存规则service iptables save。 - 网络连通性:确保客户端机器能够通过 IP 地址和端口 3690 访问到 SVN 服务器,可以使用
telnet <服务器IP> 3690命令进行测试。 - 权限配置:检查 SVN 版本库
conf/svnserve.conf文件中的权限设置,确保没有错误地拒绝了匿名或认证用户的访问,并确认passwd和authz文件配置无误。