错误2:原来是个误会!
【知识点】:hash 的实践
相关链接:http://bkeep.blog.163.com/blog/static/1234142902009101253026862
错误1:[Errno -1] Metadata file does not match checksum
[root@localhost yum]# pwd
/var/cache/yum
[root@localhost yum]# ls
addons base extras update //这四个目录都是在yum.conf里定义的
【知识点】:hash 的实践
在运行yum命令的时候会报错如下:
[root@localhost packages]# yum list
Loading "rhnplugin" plugin
Loading "installonlyn" plugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up repositories
update 100% |=========================| 1.9 kB 00:01
base 100% |=========================| 2.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 125 kB 00:00
################################################## 247/247
primary.xml.gz 100% |=========================| 893 kB 00:03
################################################## 2535/2535
primary.xml.gz 100% |=========================| 201 B 00:00
primary.xml.gz 100% |=========================| 107 kB 00:00
http://mirror.centos.org/centos/5/extras/i386/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from extras: [Errno 256] No more mirrors to try.
【问题原因。重要!】:根据/etc/yum.conf配置文件中的cachedir=/var/cache/yum定义了各个连接的下载缓存在本地对应的目录。其中类似*xml.gz就是metadata信息。而repomd.xml就是校验数据。它使用的是sha1进行校验的。只有当*.xml.gz的sha1校验码和repomd.xml中记录的值一样,yum才会认为metadata有效,否则就会报上面的错误。
下面来验证一下我的metadata和repomd.xml中记录的值是否匹配!(结果证明真的不匹配,黄色底纹的内容)
[root@localhost extras]# cd /var/cache/yum/extras
[root@localhost extras]# ls
cachecookie headers packages primary.xml.gz repomd.xml
【知识点2】 [root@localhost extras]# sha1sum primary.xml.gz
4c43009243f43e753cb76ae954dbb28d5d94f612 primary.xml.gz
[root@localhost extras]# cat repomd.xml |grep -w 'checksum' |grep -v 'open-checksum'
<checksum type="sha">a3b3a3aa00b556083fd29d95f2f6f49cdb996d8a</checksum>
<checksum type="sha">4c4e74f013618b75dcbab44cb118e30ff349fa2b</checksum>
<checksum type="sha">64b8390c62b330208b2e097c1f853466ecd6d1e3</checksum>
<checksum type="sha">94bb5d121e662e57176131dfabd9db1e1b8335fa</checksum>
[root@localhost extras]# wget --cache=off http://mirror.centos.org/centos/5/extras/i386/repodata/primary.xml.gz
--07:25:51-- http://mirror.centos.org/centos/5/extras/i386/repodata/primary.xml.gz
Resolving mirror.centos.org... 216.7.183.116
Connecting to mirror.centos.org|216.7.183.116|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://122.9.59.230:9203/3833E825D4297186DA48B85D7FCF0DD09047E28E/mirror.centos.org/centos/5/extras/i386/repodata/primary.xml.gz [following]
--07:25:56-- http://122.9.59.230:9203/3833E825D4297186DA48B85D7FCF0DD09047E28E/mirror.centos.org/centos/5/extras/i386/repodata/primary.xml.gz
Connecting to 122.9.59.230:9203... connected.
HTTP request sent, awaiting response... 200 OK
Length: 109290 (107K) [application/x-gzip]
Saving to: `primary.xml.gz.1'
100%[=======================================>] 109,290 --.-K/s in 0.1s
07:25:56 (725 KB/s) - `primary.xml.gz.1' saved [109290/109290]
[root@localhost extras]# sha1sum primary.xml.gz
4c43009243f43e753cb76ae954dbb28d5d94f612 primary.xml.gz
为什么会造成这种问题呢?不匹配怎么办?
【答案】当生成metadata数据的时候,会一同产生校验数据。而传输的时候,会用该校验数据判断metadata是否完整。这时候就会产生一个问题,mirror镜像当从源网络拷贝数据回来时,下载了metadata,但还没下载校验数据(或由定时任务产生校验数据,但这时定时任务还没有执行)。这时,如果刚好你正使用yum从该镜像更新,就会发生Metadata file does not match checksum的问题了。
解决方法1,根据大部分的镜像都是每小时进行一次数据同步或生成校验数据的,所以,不要选择接近整点的时候更新数据,而应选择整点过后再更新。但这只是建议,不能保证一定能解决该问题。
解决方法2,从配置文件中注释掉该源!( 哈哈,我想出来的!)
我的yum配置如下 /etc/yum.conf内容
[root@localhost extras]# cat /etc/yum.conf
[main]
exclude=apache* bind-chroot courier* dovecot* exim* mod_ssl* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail* wget*
http_caching=packages
cachedir=/var/cache/yum
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[base]
name=centos-5 - Base
baseurl=http://centos.ustc.edu.cn/centos/5/os/i386/
# the other site: http://centos.candishosting.com.cn/centos/5/os/i386/
# you can find more site in: http://www.centos.org/modules/tinycontent/index.php?id=13
enabled=1
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
#released updates
[update]
name=CentOS-5 - Updates
baseurl=http://mirror.centos.org/centos/5/updates/i386/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
#packages used/produced in the build but not released
[addons]
name=CentOS-5 - Addons
baseurl=http://mirror.centos.org/centos/5/addons/$basearch/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
【解决办法】
#注释掉下面的内容后yum就不会再报错了!
#[extras]
#name=CentOS-5 - Extras
#baseurl=http://mirror.centos.org/centos/5/extras/$basearch/
#gpgcheck=1
#gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-5 - Plus
baseurl=http://mirror.centos.org/centos/5/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
#contrib - packages by Centos Users
[contrib]
name=CentOS-5 - Contrib
baseurl=http://mirror.centos.org/centos/5/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
#packages in testing
[testing]
name=CentOS-5 - Testing
baseurl=http://mirror.centos.org/centos/5/testing/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://centos.ustc.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
运行yum命令。一切正常!
yum clean all
yum list
参考文档:http://tilt.lib.tsinghua.edu.cn/node/385
错误2:原来是个误会!
[root@localhost ~]# yum install heartbeat-ld*
Loading "rhnplugin" plugin
Loading "security" plugin
This system is not registered with RHN.
RHN support will be disabled.
Excluding Packages in global exclude list
Finished
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package heartbeat-ldirectord.i386 0:2.1.3-3.el5.centos set to be updated
--> Processing Dependency: perl-Authen-Radius for package: heartbeat-ldirectord
--> Processing Dependency: perl-MailTools for package: heartbeat-ldirectord
--> Processing Dependency: perl-Net-IMAP-Simple for package: heartbeat-ldirectord
--> Processing Dependency: perl-POP3Client for package: heartbeat-ldirectord
--> Processing Dependency: perl-Net-DNS for package: heartbeat-ldirectord
--> Processing Dependency: perl-Crypt-SSLeay for package: heartbeat-ldirectord
--> Processing Dependency: perl-LDAP for package: heartbeat-ldirectord
--> Processing Dependency: perl(Mail::Send) for package: heartbeat-ldirectord
--> Processing Dependency: perl-Net-IMAP-Simple-SSL for package: heartbeat-ldirectord
--> Finished Dependency Resolution
Error: Missing Dependency: perl-Authen-Radius is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-MailTools is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-Crypt-SSLeay is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-LDAP is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-Net-DNS is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl(Mail::Send) is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-POP3Client is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-Net-IMAP-Simple-SSL is needed by package heartbeat-ldirectord
Error: Missing Dependency: perl-Net-IMAP-Simple is needed by package heartbeat-ldirectord
【错误原因】 这个错误害的我好惨。。。。闹了半天是因为/etc/yum.conf里多加了一句话!!
[root@localhost ~]# cat /etc/yum.conf
[main]
#exclude=apache* bind-chroot courier* dovecot* exim* mod_ssl* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail* wget*
【解决办法】
把上面的语句注释掉就ok 了!!!