在版本控制领域,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
解答:这个错误的根本原因是 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
文件配置无误。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复