如何快速解决Yum更新系统包出错问题,轻松升级系统?
- 内容介绍
- 文章标签
- 相关推荐
一、常见痛点:为什么 Yum 更新总是出错?
在日常运维中,Yum 是 Linux 程序最常用的包管理工具。但很多使用者会在执行 yum update 时遭遇以下困扰:
- 报错信息千篇一律,却找不到根源。
- 程序提示 “Yum 在启动 fastestmirror 插件时出错”,导致整个更新过程卡死。怎么说呢,
- 因为 硬盘空间不足 或 网络不通导致下载中途中断。
- 权限不足让所有命令都以“Permission denied”告终。
- Yum 本身版本过旧无法识别新仓库或新软件包。
- 依赖冲突卸载或升级某个关键组件后Yum 再也找不到所需的 rpm 包。
二、第一步先:快速定位错误来源
1️⃣ 查看 Yum 日志
/var/log/yum.log 保存了每一次更新的详细记录。通过以下命令可以筛选最近的错误:
# tail -n 50 /var/log/yum.log | grep -i "error\|failed"
2️⃣ 检查程序日志
/var/log/messages 与 /var/log/syslog 一样可能记录网络超时或磁盘 I/O 错误:
# grep -i "yum" /var/log/messages
# grep -i "yum" /var/log/syslog
三、更新 Yum 本身及其依赖
更新 Yum:
# yum clean all
# yum update yum
# yum check-update # 确认无残留依赖冲突
If above fails because Yum itself is broken,you can manually下载对应版本的 rpm 包并强制安装:
# rpm -Uvh --force http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# rpm -Uvh --force http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/python-2.6.6-66.el6.x86_64.rpm
# yum clean all && yum makecache
# yum update
四、清理缓存 & 重建仓库元数据
# yum clean all
# rm -rf /var/cache/yum/*
# yum makecache
# yum repolist
五、手动卸载并重新安装 Python 与 Yum
⚠️ 操作前请确保已备份关键数据!⚠️
a) 卸载 Python
# rpm -qa | grep ^python | xargs -r rpm -e --nodeps --allmatches
# whereis python | xargs -r rm -rf
b) 卸载 Yum 本身及其配置文件
# rpm -qa | grep ^yum | xargs -r rpm -e --nodeps --allmatches
# rm -rf /etc/yum.repos.d/*
# whereis yum | xargs -r rm -rf
c) 从官方镜像站重新安装
# cd /tmp
# wget http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/python-2.6.6-66.el6.x86_64.rpm
# wget http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# rpm -ivh python-*.rpm yum-*.rpm
# yum clean all && yum makecache
# yum update #
尝试程序升级
六、跳过损坏包 & 强制更新
If you just need rest of system to be updated while a few packages are broken:
# yum update --skip-broken # 跳过无法解析的依赖关系
七、检查硬盘空间 & 权限
a) 硬盘空间检查
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 18G 1G 95% /
如果可用空间不足。请清理旧日志或删除不必要的软件:
bash
b) 权限确认
Sudo 或 root 使用者才能执行大多数 YUM 操作:
# sudo su -
八、网络问题排查 & DNS 修复
a) 基础连通性测试
# ping -c 4 mirrors.aliyun.com # 检查是否能访问外部镜像站
b) DNS 配置
# echo "nameserver 8.8.8.8"> /etc/resolv.conf # 使用 Google 公共 DNS
C) 更换国内镜像源
以阿里云为例这方面,
# sed -i.bak 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo
九、常见错误对照表 & 快捷方式
| Error Message | Pain Point | Solve Method |
|---|---|---|
| "Could not retrieve mirrorlist" | 网络或 DNS 不通导致仓库列表获取失败。 | - 检查网络连通性
- 更换 DNS
- 临时禁用 fastestmirror:
# yum --disableplugin=fastestmirror update |
# yum deplist 包名 | grep provider: 定位缺失依赖
- 尝试先手动安装缺失 RPM
- 如仍失败。
可使用
# yum update --skip-broken
# yum --disableplugin=fastestmirror update
- 或者删除插件文件:
通过以上「定位 → 清理 → 修复 → 更新」四步法。你可以在 几分钟 内把大多数 Yum 更新报错消灭掉,完成起来不难程序升级。老实说,若仍然卡在某一步。请把报错信息贴到社区或搜索具体错误码,往往能得到更精准的帮助。祝你玩转 Linux,程序永远保持最新安全!
一、常见痛点:为什么 Yum 更新总是出错?
在日常运维中,Yum 是 Linux 程序最常用的包管理工具。但很多使用者会在执行 yum update 时遭遇以下困扰:
- 报错信息千篇一律,却找不到根源。
- 程序提示 “Yum 在启动 fastestmirror 插件时出错”,导致整个更新过程卡死。怎么说呢,
- 因为 硬盘空间不足 或 网络不通导致下载中途中断。
- 权限不足让所有命令都以“Permission denied”告终。
- Yum 本身版本过旧无法识别新仓库或新软件包。
- 依赖冲突卸载或升级某个关键组件后Yum 再也找不到所需的 rpm 包。
二、第一步先:快速定位错误来源
1️⃣ 查看 Yum 日志
/var/log/yum.log 保存了每一次更新的详细记录。通过以下命令可以筛选最近的错误:
# tail -n 50 /var/log/yum.log | grep -i "error\|failed"
2️⃣ 检查程序日志
/var/log/messages 与 /var/log/syslog 一样可能记录网络超时或磁盘 I/O 错误:
# grep -i "yum" /var/log/messages
# grep -i "yum" /var/log/syslog
三、更新 Yum 本身及其依赖
更新 Yum:
# yum clean all
# yum update yum
# yum check-update # 确认无残留依赖冲突
If above fails because Yum itself is broken,you can manually下载对应版本的 rpm 包并强制安装:
# rpm -Uvh --force http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# rpm -Uvh --force http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/python-2.6.6-66.el6.x86_64.rpm
# yum clean all && yum makecache
# yum update
四、清理缓存 & 重建仓库元数据
# yum clean all
# rm -rf /var/cache/yum/*
# yum makecache
# yum repolist
五、手动卸载并重新安装 Python 与 Yum
⚠️ 操作前请确保已备份关键数据!⚠️
a) 卸载 Python
# rpm -qa | grep ^python | xargs -r rpm -e --nodeps --allmatches
# whereis python | xargs -r rm -rf
b) 卸载 Yum 本身及其配置文件
# rpm -qa | grep ^yum | xargs -r rpm -e --nodeps --allmatches
# rm -rf /etc/yum.repos.d/*
# whereis yum | xargs -r rm -rf
c) 从官方镜像站重新安装
# cd /tmp
# wget http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/python-2.6.6-66.el6.x86_64.rpm
# wget http://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# rpm -ivh python-*.rpm yum-*.rpm
# yum clean all && yum makecache
# yum update #
尝试程序升级
六、跳过损坏包 & 强制更新
If you just need rest of system to be updated while a few packages are broken:
# yum update --skip-broken # 跳过无法解析的依赖关系
七、检查硬盘空间 & 权限
a) 硬盘空间检查
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 18G 1G 95% /
如果可用空间不足。请清理旧日志或删除不必要的软件:
bash
b) 权限确认
Sudo 或 root 使用者才能执行大多数 YUM 操作:
# sudo su -
八、网络问题排查 & DNS 修复
a) 基础连通性测试
# ping -c 4 mirrors.aliyun.com # 检查是否能访问外部镜像站
b) DNS 配置
# echo "nameserver 8.8.8.8"> /etc/resolv.conf # 使用 Google 公共 DNS
C) 更换国内镜像源
以阿里云为例这方面,
# sed -i.bak 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo
九、常见错误对照表 & 快捷方式
| Error Message | Pain Point | Solve Method |
|---|---|---|
| "Could not retrieve mirrorlist" | 网络或 DNS 不通导致仓库列表获取失败。 | - 检查网络连通性
- 更换 DNS
- 临时禁用 fastestmirror:
# yum --disableplugin=fastestmirror update |
# yum deplist 包名 | grep provider: 定位缺失依赖
- 尝试先手动安装缺失 RPM
- 如仍失败。
可使用
# yum update --skip-broken
# yum --disableplugin=fastestmirror update
- 或者删除插件文件:
通过以上「定位 → 清理 → 修复 → 更新」四步法。你可以在 几分钟 内把大多数 Yum 更新报错消灭掉,完成起来不难程序升级。老实说,若仍然卡在某一步。请把报错信息贴到社区或搜索具体错误码,往往能得到更精准的帮助。祝你玩转 Linux,程序永远保持最新安全!

