配置yum过程中的错误;hash用法!

错误1[Errno -1] Metadata file does not match checksum

错误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.gzsha1校验码和repomd.xml中记录的值一样,yum才会认为metadata有效,否则就会报上面的错误。

 

下面来验证一下我的metadatarepomd.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 了!!!

转载于:https://my.oschina.net/aiguozhe/blog/33823

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值