我yum update
无法更新软件包。我已经尝试了提供的所有可能的解决方案,yum clean, yum repolist, etc
但这些似乎都不能解决这个问题。
sudo yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.mirror.net.in
* elrepo: elrepo.reloumirrors.net
* epel: mirror.nes.co.id
* extras: mirrors.fibergrid.in
* nux-dextop: mirror.li.nux.ro
* rpmfusion-nonfree-updates: www.mirrorservice.org
* updates: mirrors.fibergrid.in
No packages marked for update
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#packages used/produced in the build but not released
#[addons]
#name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
注意 - 使用 #baseurl 也没有运气。
答案1
手头上的问题
您无法通过 yum 更新。
解决方案
我将参考这个堆栈交换帖子也这个 CentOS 维基页面在这个答案中。
您首先需要验证所有存储库是否正确。我链接的维基应该有到各种第三方存储库以及基础存储库的配置的附加链接。我还要指出,第三方存储库可能会与系统的其他方面发生冲突。与 Debian 不同的是,我发现基于 rpm 的发行版可以更好地支持第 3 方存储库。
验证所有存储库均已正确配置后(每个第 3 方/供应商应提供有关您各自 CentOS 版本的工作配置文件的详细信息),您将需要使用 root(sudo) 运行以下命令权限:
yum clean all
根据 Wiki 和 user1403360 的说法,这将清除您的缓存并在下次运行时重新下载您的镜像yum update
。
问题是您的存储库可能不正确。请记住,与基于 Debian 的发行版不同,基于 rpm 的发行版通常要求每个存储库在目录中都有自己的文件/etc/yum.repos.d/
。
这是关于如何管理基于 Redhat 的系统的存储库的良好指南。请验证您是否已按照链接中概述的方式管理您的存储库。如有必要,请清除所有存储库并使用链接中概述的步骤将它们添加回来。
结论
您需要确保正确管理和配置存储库,然后需要清除缓存并重新下载镜像。这应该可以解决你的问题。
如果您对此答案有任何疑问或疑问,请发表评论。我强烈建议您在尝试命令之前仔细阅读我提供的每个链接。我感谢您提供反馈来纠正任何误解并改进我的帖子。我可以根据需要更新我的答案。
祝你好运!
答案2
我知道这个问题已经有好几年了,但我刚刚遇到它并找到了另一个对我有用的解决方法。在我的案例中,此问题的原因是我的 RHEL 订阅在更新期间过期。服务器的订阅已重新激活,但服务器继续给出“没有标记为更新的软件包”消息,尽管我可以看到服务器上的版本与 Red Hat 在 access.redhat.com 上显示的版本不匹配该服务器的订阅。我发现故障是在更新过程中发生的。 Yum 表示这些软件包已全部更新,但文件系统显示它们实际上尚未更新。运行命令yum clean all
对我来说没有任何作用。对我有用的是运行:
rpm -qa --last
生成 yum 所说的已安装的所有软件包的列表。然后我跑了
yum reinstall
对于每个包,强制文件系统与 yum 匹配。
rpm -qa --last > /tmp/rpm-qa-last.txt
for package in `cat /tmp/rpm-qa-last.txt `;
do
echo "yum reinstall $package -y" > /tmp/yum_reinstall.sh
done
chmod +x /tmp/yum_reinstall.sh
/tmp/yum_reinstall.sh
我还发现其中的一些存储库/etc/yum.repos.d/
已被禁用。就我而言,它是针对 Percona 的,它为旧版本的 MySQL 提供支持协议,这就是我在 2023 年更新 RHEL 7 服务器的原因。我设置了enabled=1
受影响的 yum 存储库,当我重新运行时,yum updateinfo
出现了新的 Percona 软件包。
请注意,在我的例子中,它是 RHEL 服务器,但在 CentOS 系统上也可能发生同样的情况,因为我们同时使用这两种系统,而且我的解决方案的第一部分并不特定于 RHEL。