在基于Red Hat的系统(如RHEL,CentOS或Fedora)上,yum用作包管理工具,用于安装,更新和删除RPM包。当您尝试使用yum命令安装程序包时,可能会由于各种原因而遇到错误。在这篇文章中,我将描述yum命令的几个常见错误症状,并解释如何修复yum错误。
1.修复404错误
症状:当您尝试使用yum安装软件包时,yum会抛出错误:
"The requested URL returned error: 404Not Found"
Loaded plugins: fastestmirror
base | 3.7 kB 00:00
base/primary_db | 4.4MB 00:09
extras | 3.5 kB 00:00
http://mirror.steadfast.net/centos/6.4/extras/x86_64/repodata/e0e507c76dc5e5aa66c1f32632b9dc0a9759d97031ab5a028562a7cb7be6e294-primary.sqlite.bz2:
[Errno 14] PYCURL ERROR 22 - "Therequested URL returned error: 404
Not Found"
Trying other mirror.
http://mirrors.seas.harvard.edu/centos/6.4/extras/x86_64/repodata/e0e507c76dc5e5aa66c1f32632b9dc0a9759d97031ab5a028562a7cb7be6e294-primary.sqlite.bz2:
[Errno 14] PYCURL ERROR 22 - "Therequested URL returned error: 404
Not Found"
Trying other mirror.
当yum下载的元数据已经过时时,您可以获得这些404错误。
要修复yum 404错误,请按如下方式清除yum元数据。
$ sudo yum clean metadata
或者您可以清除整个yum缓存:
$ sudo yum clean all
2.修复连接失败错误
症状:运行yum命令时出现 :
"network is unreachable" or"couldn't connect to host" errors while running yum command.
Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist
http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=oserror was
14: PYCURL ERROR 7 - "Failed toconnect to
2a02:2498:1:3d:5054:ff:fed3:e91a: Networkis unreachable"
Error: Cannot find a valid baseurl forrepo: base
http://mirror.nexcess.net/CentOS/6.4/os/x86_64/repodata/repomd.xml:
[Errno 14] PYCURL ERROR 7 - "couldn'tconnect to host"
Trying other mirror.
http://mirrordenver.fdcservers.net/centos/6.4/os/x86_64/repodata/repomd.xml:
[Errno 14] PYCURL ERROR 7 - "couldn'tconnect to host"
Trying other mirror.
http://mirrors.cmich.edu/centos/6.4/os/x86_64/repodata/repomd.xml:
[Errno 14] PYCURL ERROR 7 - "couldn'tconnect to host"
Trying other mirror.
该错误意味着由于某种原因您无法正确连接到存储库服务器。如果您仍然可以毫无问题地ping服务器,请检查您的系统是否在代理服务器后面。如果您在代理后面运行yum,但未在yum配置中指定代理,则会出现如上所述的连接失败错误。
要在yum配置中配置代理:
$ sudo vi /etc/yum.conf
[main]
proxy=http://proxy.com:8000
3.修复元数据校验和错误
症状:运行yum命令时出现“元数据文件与校验和不匹配” 。
epel/pkgtags |466 kB 00:14
http://mirror.steadfast.net/epel/6/x86_64/repodata/pkgtags.sqlite.gz:[Errno -1] Metadata file does not match checksum
Trying other mirror.
当yum下载的元数据已过时时,您可以获取元数据校验和错误。
要修复yum校验和错误,请清除yum元数据:
$ sudo yum clean metadata
4.修复Yum Lock错误
症状:当您尝试使用yum安装软件包时,会收到错误消息,指出“另一个应用程序当前正在持有yum lock”。
Loaded plugins: langpacks, presto,refresh-packagekit
Existing lock /var/run/yum.pid: anothercopy is running as pid 1880.
Another app is currently holding the yumlock; waiting for it to exit...
Theother application is: PackageKit
Memory : 178 M RSS (586 MB VSZ)
Started: Tue Jul 9 09:43:17 2013- 00:12 ago
State : Sleeping, pid: 1880
这个错误的罪魁祸首是PackageKit,它负责基于Red Hat的系统的自动更新。该PackageKit的过程被启动时自动启动,持有百胜锁。
要修复错误,请关闭系统上的PackageKit,以便它不会执行自动更新检查。以下是禁用PackageKit的说明。
重新启动桌面后,您将不再遇到yum lock错误。
5.修复存储库数据库读取错误
症状:当您使用yum安装软件包时,会收到错误消息“压缩文件在检测到逻辑结束流之前结束”
Loaded plugins: langpacks,refresh-packagekit
Error: Error reading from file/var/cache/yum/x86_64/20/rpmfusion-free-updates/1461ed771601e7963990534c16584ab963d9c9f4eea94348ba357b93ab3c621f-primary.sqlite.bz2:compressed file ended before the logical end-of-stream was detected
当yum命令在下载存储库数据库时被中断时,可能会发生此错误。因此保存的数据库不完整,并被视为已损坏。
要解决此问题,请运行以下命令清理yum数据库:
$ sudo yum clean metadata
6.修复存储库元数据读取错误
症状:当您使用yum安装或搜索任何程序包时,会出现以下错误:
removing mirrorlist with no valid mirrors:/var/cache/yum/i386/6/updates/mirrorlist.txt
Error: Cannot find a valid baseurl forrepo: updates
$ sudo yum clean all
7.修复包数据库错误
症状:运行yum命令时出现“无法在/ var / lib / rpm中打开Packages数据库”错误。
error: rpmdb: BDB0113 Thread/process6983/140505029793600 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) fromdbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5- (-30973)
error: cannot open Packages database in/var/lib/rpm
CRITICAL:yum.main:
当本地RPM数据库由于某种原因损坏或丢失时,可能会发生此问题。以下是如何重新创建RPM数据库以修复此错误。
$ sudo rm -f / var / lib / rpm / __ db *
$ sudo db_verify / var / lib / rpm /Packages
$ sudo rpm --rebuilddb
$ sudo yum clean all