如何在已停止维护的 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
加载中...
4票,平均分:1.00/14
8,149
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

里面

我中途加入 Beyond 公司,
在系统解决方案部门
。我拥有 LPIC-3 304 和 AWS SAA 认证。