如何在已停止维护的 CentOS 6 上使用 yum [软件源变更]

目录
大家好,
我是系统解决方案部门的Naka,我希望1Gbps或以上的网络线路能够成为标配。
强烈建议迁移较旧的环境,例如 CentOS 6 环境,但由于各种原因,这些环境可能会保留下来。
在这种环境下,你很可能会遇到无法使用“yum”来更新或添加某些内容的情况(或者如果你尝试使用它,就会发生错误)。
这次,我们将解释并提供“如何在 CentOS 6 上使 yum 可用(更改存储库)”的说明,以解决此问题。
介绍
- 我们不建议使用 CentOS 6。
这一个临时解决方案,其存在是由于不可避免的原因 - 目标不是使用基础存储库,而是使“yum”成为可能。
- 这是解决默认存储库所导致问题的步骤。
执行环境
■ Windows 环境
操作系统:Windows 11 专业版(版本:23H2)
语言设置:已更改为日语■ 验证 CentOS 6 环境(Vagrant + VirtualBox)
操作系统:CentOS 6.9 (bento/centos-6.9)
Vagrant:2.4.1
VirtualBox:7.0.18 r162988 (Qt5.15.2)
IP:192.168.33.15
主机名:targetnode
用户名:vagrant
仓库原因 - 错误:找不到仓库 base 的有效 baseurl。
$ yum info 已加载插件:fastestmirror 正在确定最快的镜像 YumRepo 错误:所有镜像 URL 均未使用 ftp、http[s] 或 file。例如:无效的发布/仓库/架构组合/ 删除镜像列表,因为没有有效的镜像:/var/cache/yum/x86_64/6/base/mirrorlist.txt 错误:找不到仓库 base 的有效 baseurl
当您尝试使用“yum”很可能会看到上述错误“错误:找不到 repo: base 的有效 baseurl”
出现此错误的原因是所有默认存储库都已因 EOL(生命周期结束)而关闭(终止),
要解决此问题,您需要为 CentOS 6 配置一个单独的存储库以供使用。
工作流程
0. 检查 yum 错误
为了确保万无一失,即使没有问题,也不要继续进行这项工作。
$ yum info 已加载插件:fastestmirror 正在确定最快的镜像 YumRepo 错误:所有镜像 URL 均未使用 ftp、http[s] 或 file。例如:无效的 release/repo/arch 组合/ 删除镜像列表,因为没有有效的镜像:/var/tmp/yum-vagrant-BcYfuY/x86_64/6/base/mirrorlist.txt 错误:找不到仓库 base 的有效 baseurl
⇓
错误:找不到仓库 base 的有效 baseurl。
既然我们已经找到了错误,那就开始着手解决吧。
1. 备份您的存储库
在对代码库进行任何更改之前,请先制作一个带有日期的备份。
有可能你保存后所有内容都会被删除,所以最好还是保留它。
$ cp -p /etc/yum.repos.d/CentOS-Base.repo /tmp/CentOS-Base.repo.`date +%Y%m%d` $ ls -l /tmp | grep CentOS-Base.repo -rw-r--r--. 1 vagrant vagrant 1991 Mar 28 2017 CentOS-Base.repo.2024xxxx
(这是一个临时备份,所以创建在 /tmp 目录下)
提示:CentOS-Base.repo.`date +%Y%m%d`
命令结果以反引号 (`) 括起来的字符串形式处理。
其中,可以使用指定格式(年、月、日)的 data 命令来显示日期和时间。
这样很方便,因为无需查看日历即可进行备份,文件名以执行命令时的日期和年份结尾。
2. 修改存储库
○ 2-1. 检查默认状态
如果保留默认存储库,则应如下所示:
$ less /etc/yum.repos.d/CentOS-Base.repo ~省略~ [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ ~省略~ [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ ~省略~ [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ ~省略~ [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ ~省略~ [contrib] name=CentOS-$releasever - Contrib mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/ ~已省略~
○ 2-2. 镜像列表功能异常,请将其禁用(注释掉)。
注释掉“mirrorlist=http://mirrorlist.centos.org”部分,但编辑多个地方很容易出错。
因此,我们将使用 sed 命令执行批量替换。
$ sudo sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
○ 2-3. 重写 baseurl 并启用它(注释掉)
取消注释“#baseurl="”,并指定您要使用 IIJ 提供的 CentOS 软件仓库。
*此指定软件仓库截至 2024 年 7 月仍然可用。如果该软件仓库将来停止维护,请指定其他软件仓库。
也可以使用 sed 命令批量替换。
$ sudo sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org\/centos\/\$releasever/baseurl=http:\/\/ftp.iij.ad.jp\/pub\/linux\/centos-vault\/\$releasever/g" /etc/yum.repos.d/CentOS-Base.repo
如果您想手动重写,请按如下所示更改“#baseurl="”部分。
#baseurl=http://mirror.centos.org/centos/$releasever ⇓ baseurl=http://ftp.iij.ad.jp/pub/linux/centos-vault/$releasever
○ 2-4. 检查更改/差异
检查编辑后的仓库和备份仓库之间的差异,以确保更改符合您的预期。
$ diff /etc/yum.repos.d/CentOS-Base.repo /tmp/CentOS-Base.repo.`date +%Y%m%d` 15,16c15,16 < #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra < baseurl=http://ftp.iij.ad.jp/pub/linux/centos-vault/$releasever/os/$basearch/ --- > mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra > #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ ~省略~
如上所示,只要能够得到变化前后的差异,就不会有问题。
○ 2-5. 指定变量“$releasever”
要锁定某个次要版本,请将版本号包含在“releasever”变量中。
这是通过创建一个变量文件来固定这些值来实现的。
(如果这些值已经指定/固定,则无需执行此步骤。)
$ ls -l /etc/yum/vars/ | grep releasever *确保它尚未创建 $ sudo sh -c 'echo "6.9" > /etc/yum/vars/releasever' *创建并添加 *如果您以 root 用户身份运行,则 echo "6.9" > /etc/yum/vars/releasever 即可。 $ cat /etc/yum/vars/releasever *确保它已列出 6.9
没有问题,显示的数值是 6.9。
3. 检查 yum 是否正常工作并清除缓存
3-1. 使用 yum info 检查 yum 是否可用
让我们显示php的软件包信息:
$ yum info php 已加载插件:fastestmirror 正在确定最快的镜像 可用软件包 名称:php 架构:x86_64 版本:5.3.3 发行版:49.el6 大小:1.1 M 仓库:base 摘要:用于创建动态网站的 PHP 脚本语言 URL:http://www.php.net/ 许可证:PHP 描述:PHP 是一种嵌入 HTML 的脚本语言。PHP 试图使其……(省略)
如果版本和其他信息如上所示显示,则 yum 工作正常。
○ 3-2. 清除 Yum 缓存
虽然没有必要,但由于我们对 yum 进行了更改,我们将清除缓存。
$ sudo yum clean all 已加载插件:fastestmirror 正在清理仓库:base extras updates 正在清理所有内容 正在清理最快镜像列表
完成
至此,解决“yum”错误的存储库更改过程已完成。
最后
这个过程本身并不难。
但是,当你想要使用“yum”命令时,很容易遇到这个错误,所以在CentOS 6环境下提前做好准备会更容易。
我希望这篇文章能为读者提供一些有用的知识和信息。
感谢您读到这里。
参考资料
如何更改 CentOS 6 软件源地址? | 阿里云
https://www.alibabacloud.com/help/en/ecs/user-guide/change-the-centos-6-source-address
8.2.3. 显示软件包信息 | RHEL6
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-displaying_package_information
4