[原]解决Metadata file does not match checksum错误

linuxing , 14:04 , 基础知识 » 故障处理 , 评论(4) , 引用(0) , 阅读(12910) , Via 本站原创 大 | 中 | 小
引用地址:
注意: 该地址仅在今日23:59:59之前有效
最近发现,在使用yum更新包的时候,常报下面的错误:

引用
Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 1.7 MB    02:25
http://www.mirrorservice.org/sites/apt.sw.be/redhat/el4/en/i386/dag/repodata/primary.xml.gz:
[Errno -1] Metadata file does not match checksum
Trying other mirror.

有时候当替换了几个镜像后就可以了。但经常也会发现最终是失败的。由于我的系统是依赖yum更新的,若使用国外网络源的时候出这样的问题,影响挺大的。
   Google搜索了一下,是一个常见问题,也提供了一些方法。只是后来发现,这些方法要不就是没有说清楚,要不就是误解。经过测试,最终基本可以解决了。
一、原因
从该地址找到一段说明:点击

引用
To reduce load, download.fedora.redhat.com (official host) contains the ~1kB checksum for the metadata. The metadata (usually ~1 - 2 MB) is downloaded off mirrors. After downloading metadata, Yum compares the two to make sure they're one and the same.
Now, think of this: download.fedora.redhat.com updates their metadata and checksums, so you're getting the new checksum. The mirror's cronjobs havn't gone yet, therefore no synching and the metadata isn't the newest, it doesn't match.

The solution is not to makecache; Although it may help it will take forever and still not 100% solve the problem. The main problem is not giving the mirrors enough synch time. Typically, cron runs every hour, and give it a bit of time to download the changes, so I'd say try running maybe 10 minutes after an hour and you'll have no problem (eg 3:10, 4:10, 5:10, etc...). If you get closer to :50 (3:50, :50, etc) you'll start seeing more syncing issues.

Again, this too isn't 100% perfect but more of a guideline. There's a lot of guesswork...

大概的意思是说:

引用
当生成metadata数据的时候,会一同产生校验数据。而传输的时候,会用该校验数据判断metadata是否完整。这时候就会产生一个问题,mirror镜像当从源网络拷贝数据回来时,下载了metadata,但还没下载校验数据(或由定时任务产生校验数据,但这时定时任务还没有执行)。这时,如果刚好你正使用yum从该镜像更新,就会发生Metadata file does not match checksum的问题了。
文中提供的解决方法是,根据大部分的镜像都是每小时进行一次数据同步或生成校验数据的,所以,不要选择接近整点的时候更新数据,而应选择整点过后再更新。但这只是建议,不能保证一定能解决该问题。

参考该文章的内容,我们可以看看yum更新下载的数据: /var/cache/yum,根据你定义的repo.d文件内容,会分开多层目录,每层代表一个更新路径。

引用
例如:/var/cache/yum/rpmforge
其中,primary.xml.gz、filelists.xml.gz、和other.xml.gz就是metadata信息,而repomd.xml就是校验数据。其使用的是sha1进行校验的。

找到原因,解决就不难了。

二、解决
1、清空缓存
执行:

# yum clean all

先把就的缓存数据都去掉。

2、下载metadata和校验数据
先进入yum对应的目录,再下载:

# cd /var/cache/yum/rpmforge
# wget --cache=off http://apt.sw.be/redhat/el4/en/i386/dag/repodata/repomd.xml
# wget --cache=off http://apt.sw.be/redhat/el4/en/i386/dag/repodata/primary.xml.gz
# wget --cache=off http://apt.sw.be/redhat/el4/en/i386/dag/repodata/filelists.xml.gz
# wget --cache=off http://apt.sw.be/redhat/el4/en/i386/dag/repodata/other.xml.gz

3、校验数据
执行:

引用
# sha1sum other.xml.gz filelists.xml.gz primary.xml.gz
74fcc9f9e218cfdbc1ac2b5ac17ff7d912267bdf  other.xml.gz
3f4b2e9a5efc67c0cdf329c69f041daa82a2346c  filelists.xml.gz
bd2033e1fd7a7d1f1b92ce7b880919bd685217f8  primary.xml.gz

对比repomd.xml中的信息:

引用
# cat repomd.xml |grep -w 'checksum'|grep -v 'open-checksum'
   <checksum type="sha">74fcc9f9e218cfdbc1ac2b5ac17ff7d912267bdf</checksum>
   <checksum type="sha">3f4b2e9a5efc67c0cdf329c69f041daa82a2346c</checksum>
   <checksum type="sha">bd2033e1fd7a7d1f1b92ce7b880919bd685217f8</checksum>

若数据正确,则说明metadata和校验数据是匹配的。可以使用yum更新了,不会再重新下载metadata。
否则,可以再等待一下,或需要从其他的镜像获取更新咯。

三、建议
因为我们不能控制镜像更新的速度和时间,而我们的工作只是避免了yum可能发生误判的情况,但并不能完全保证上面的工作是成功的。
从尽可能避免该问题的角度出发,有几个建议:
1、选择好的镜像
设置yum.repos.d中baseurl或mirrorlist从好的镜像下载。若知道某个镜像速度快,则干脆用baseurl固定,而不要使用mirrorlist了。

2、排查网络问题
网上提供的方法大部分是转载这里的。其建议使用--cache=off参数(表示不使用服务器中的高速缓存中的数据)。
但实际上,我发现除非网络有问题,否则是否使用该参数拿回来的数据不应该有有区别的。
如:

引用
# sha1sum primary.xml.gz*
bd2033e1fd7a7d1f1b92ce7b880919bd685217f8  primary.xml.gz
bd2033e1fd7a7d1f1b92ce7b880919bd685217f8  primary.xml.gz.1

※primary.xml.gz是使用--cache=off参数的,而primary.xml.gz.1是没有使用该参数的。
所以,如果网络出现问题,是会影响到yum下载数据的完整性的。而使用--cache=off既然没坏,不妨使用咯。

四、参考资料
http://lists.freshrpms.net/pipermail/freshrpms-list/2005-May/013037.html
http://lists.freshrpms.net/pipermail/freshrpms-list/2004-November/011553.html
http://www.fedorachina.cn/index.php?topic=26.0
http://www.linuxsir.org/bbs/printthread.php?t=316600
http://sillyboy422.spaces.live.com/blog/cns!aab0c086212d33cc!195.entry

转载于:https://blog.51cto.com/bourneye/961156

yum [Errno -1] Metadata file does not match checksum相关推荐

  1. 解決yum [Errno -1] Metadata file does not match checksum

    yum clean all yum clean metadata yum makecache --disableplugin=fastestmirror 升级os: yum update You ca ...

  2. centos 7.2执行yum -y install报错Metadata file does not match checksum

    分析结论 1,Metadata file does not match checksum报错在于元文件的校验值与元文件不匹配 2,元数据是指 mnt/repodata/436345f4b666f0a4 ...

  3. 树莓派(Raspberry Pi 3) centos7使用yum命令报错File /usr/bin/yum, line 30 except KeyboardInterrupt, e:...

    使用yum命令报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid ...

  4. yum [Errno 256] No more mirrors to try 解决方法

    刚才安装smb时遇到问题yum [Errno 256] No more mirrors to try 解决方法: 系统信息:CentOS release 6.6 (Final) 1.yum clean ...

  5. Sen2cor提示:Product metadata file cannot be read报错

    Sen2cor提示:Product metadata file cannot be read报错 最近用到了Sentienl-2数据,在用Sen2cor对数据进行处理的时候提示了"Produ ...

  6. Failed to transform file 'xxx' to match attributes 的解决办法

    打开之前的项目,遇到了Failed to transform file 'xxx' to match attributes 的错误. 反复查阅资料,确定是添加的依赖缓存有问题,解决办法: C:\Use ...

  7. myeclispe 启动报错Location Type Faceted project metadata file /farming/.settings/org.eclips

    对于导入项目报错 Location Type Faceted project metadata file "/farming/.settings/org.eclips 右击选择 稍后即可解决

  8. Faceted project metadata file ... could not be read.

    为什么80%的码农都做不了架构师?>>>    之前导入过的工程报这错 "Faceted project metadata file "/AutoLogistic ...

  9. Faceted project metadata file “/game/.settings/org.eclipse.wst.common.projec

    描述    资源    路径    位置    类型 Faceted project metadata file "/game/.settings/org.eclipse.wst.commo ...

  10. VS2016 发布项目提示 CS0006 C# Metadata file 'xxxxxxx.dll' could not be found

    生成的时候没有问题,发布项目的时候提示 CS0006 C# Metadata file 'xxxxxxx.dll' could not be found 解决方案,找到 xxxxxxx.dll 这个项 ...

最新文章

  1. python运维开发常用模块(四)文件对比模块difflib
  2. BarTender操作遇到OLE DB遇到了错误0x80004005”的问题
  3. 我的世界中国版服务器无限夜视,我的世界服务器游戏技巧 无限夜视的方法
  4. 岳阳鸿蒙数学培优阶梯训练,鸿蒙应用-呼吸训练app部分练习展示(开始)
  5. 终于等到了scilab 5.1.1
  6. 搜python题_python知识点汇总(可以搜Python题答案的APP)
  7. 电商:购物车模块解决思路
  8. 小众却非常好用的文件同步备份工具-FileYee
  9. float占多少字节 java,Java语言中,float类型所占存储空间为()个字节。
  10. 面经-hangzhou
  11. 英雄联盟闪退显示无法连接服务器,英雄联盟一直闪退显示重新连接什么原因?lol崩溃进不去游戏怎么办...
  12. IDEA中鼠标变成矩形块解决
  13. 申请ARM DS-5单月试用版并安装
  14. Android 分析ANR和死锁(3)
  15. 打开word2010每次都要配置进度的解决办法
  16. int.prase和int.tryprase
  17. 使用Python代码下载网易音乐歌曲
  18. TI PFC+LLC解决方案在工业电源中的应用-电子研习社
  19. VMware虚拟机使用Ubuntu全屏问题
  20. php在线留言,PHP在线提交留言直接发到邮箱

热门文章

  1. SSH 有关密钥和私钥 的那些事儿
  2. 一图看完双11阿里云原生技术亮点
  3. android设备离线授权方案,Android平台离线打包授权登陆插件配置
  4. 毕设题目:Matlab优化调度
  5. 毕设题目:Matlab图像增强
  6. 【路径规划】基于matlab GUI粒子群算法机器人路径规划动画演示(手动设障)【含Matlab源码 924期】
  7. 机器学习 数据间的定义_定义数据科学,机器学习和人工智能
  8. 人工智能火灾报警器_使用AI进行准确的火灾预测
  9. 安装Scrapy失败的解决方法
  10. python备份目录下文件夹_python---备份目录和文件