Linux Yum故障排除指南
Yum依赖网络访问远程仓库获取软件包信息,网络故障会导致“Cannot retrieve repository metadata”等错误。
ping google.com或ping 镜像源域名(如ping mirrors.aliyun.com)测试网络连通性;cat /etc/resolv.conf),若未配置有效DNS,可临时添加echo "nameserver 8.8.8.8" > /etc/resolv.conf;仓库配置文件(位于/etc/yum.repos.d/目录下,后缀为.repo)损坏或URL无效会导致“Repository not found”“Error: Cannot retrieve repository metadata”等错误。
CentOS-Base.repo、epel.repo),确认文件未被误删或修改;vi)打开仓库文件,验证baseurl或mirrorlist的URL是否正确(可通过浏览器访问URL确认);sudo yum clean all)并重新生成(sudo yum makecache)。Yum缓存(位于/var/cache/yum/)损坏或过时会导致元数据不一致,引发“Repodata is over 2 weeks old”“Error: Cannot retrieve repository metadata”等错误。
sudo yum clean all;sudo yum makecache(此命令会下载最新仓库元数据)。Yum需要root权限执行安装、更新等操作,非root用户运行会提示“You do not have the necessary permissions”。
sudo提升权限(如sudo yum install package-name)。安装或更新软件包时,若依赖包缺失或版本不匹配,会提示“Error: Package X requires Y but none was found”“Error: Transaction check error: file conflicts”。
sudo yum install package-name,Yum会尝试安装缺失的依赖;yum search 依赖包名查找对应仓库,或手动下载RPM包安装;file /path/from/package conflicts with existing file),可卸载冲突包(sudo yum remove 冲突包名)或使用--skip-broken选项跳过冲突包(sudo yum install --skip-broken)。部分仓库启用了GPG签名验证,若密钥未导入或过期,会提示“GPG check failed for repo”。
gpgkey字段中):sudo rpm --import /path/to/keyfile;sudo yum-config-manager --disable repo-id(repo-id为仓库标识,如base)。磁盘空间不足会导致Yum无法下载或安装软件包,提示“Insufficient disk space”。
df -h命令查看磁盘使用情况,重点关注/(根分区)和/var(缓存目录)的使用率;/var/log/下的旧日志、/tmp/下的临时文件),或卸载无用软件包释放空间。若Yum进程未正常结束(如强制终止),会留下/var/run/yum.pid锁文件,导致后续命令提示“Another app is currently holding the yum lock”。
ps -ef | grep yum,获取PID后执行kill -9 PID;sudo rm -f /var/run/yum.pid(若无法删除,可重启系统)。Yum是基于Python的脚本,若Python被卸载、改名或路径错误,会提示“bad interpreter: No such file or directory”。
cat /usr/bin/yum,查看首行#!后的路径(通常为/usr/bin/python);ls -al /usr/bin/python*,若不存在,需重新安装Python(如sudo yum install python2)。若以上方法均无法解决,可通过Yum日志(/var/log/yum.log)获取详细错误信息,帮助定位问题。
tail -n 50 /var/log/yum.log查看最近50条日志;