我想在这篇文章前面加上这个免责声明:我不太熟悉 yum 的功能,也不熟悉自 CentOS 8 EOL 以来所需更改的细节。
大约一个月前,我的容器构建无法成功运行,因为当我执行 yum update 时,出现了错误。我在这里找到了解决方案,并将其添加到我的容器构建中:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
这让我度过了一段时间,直到今天它似乎又坏了。
bash-4.4# yum update
CentOS Linux 8 - AppStream 149 kB/s | 8.4 MB 00:58
CentOS Linux 8 - BaseOS 113 kB/s | 4.6 MB 00:41
CentOS Linux 8 - Extras 716 B/s | 10 kB 00:14
CentOS Linux 8 - PowerTools 0.0 B/s | 0 B 01:26
Errors during downloading metadata for repository 'powertools':
- Curl error (28): Timeout was reached for http://vault.centos.org/centos/8/PowerTools/x86_64/os/repodata/981185e5d80d51024e5246ed47f7f69605160518c22103379bb71376e2dccb14-filelists.xml.gz [Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds]
- Curl error (28): Timeout was reached for http://vault.centos.org/centos/8/PowerTools/x86_64/os/repodata/4b94ac0555ec1e15718dd9d77f995ec7096d98974b4c7a427b8e03c20e9c663d-primary.xml.gz [Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds]
所以我找到了一些其他的解决方案,但都没有奏效。例如,我发现了这篇文章:CentOS 8 升级 - 如何解决警告:加载“/etc/yum.repos.d/CentOS-AppStream.repo”失败,跳过
它让我想到了以下几点:
dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos
dnf 发行版同步
但有了这个,我得到了这个:
bash-4.4# dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos
CentOS Linux 8 - Extras 22 kB/s | 10 kB 00:00
Error:
Problem 1: conflicting requests
- nothing provides centos-gpg-keys = 1:8-3.el8 needed by centos-stream-repos-8-3.el8.noarch
Problem 2: package centos-linux-release-8.3-1.2011.el8.noarch requires centos-repos(8), but none of the providers can be installed
- conflicting requests
- problem with installed package centos-linux-release-8.3-1.2011.el8.noarch
- nothing provides centos-gpg-keys = 1:8-3.el8 needed by centos-stream-repos-8-3.el8.noarch
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
如果我给出的条件是我无法更改此容器的底层基础映像(CentOS 8),那么短期解决方案是什么?我知道长期解决方案是切换我的操作系统,但我需要坚持一小段时间。
先感谢您!
答案1
vault.centos.org 背后的基础设施很可能永远都是不稳定的。
RedHat 几乎没有动力支持它。它用于其主要操作系统的存档社区版本,该社区版本已因 CentOS Stream 而停产。
详细这里,您可能希望使用vault.epel.cloud
更可靠的方法。
sed -i 's|baseurl=http://vault.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-Linux-*
答案2
将您的容器从 CentOS 8 上移走,因为它已不再使用。不要使用 Vault。
有多种选择。通用基础映像 (UBI 8) 直接来自 Red Hat。基于 EL8 的容器来自重建,至少 Alma 和 Rocky 也有这些。