apt-get update 更新 ubuntu时出现Hash sum mismatch的原因及解决方法
$ sudo apt-get update
......
Hit http://mirrors.163.com trusty/main Sources
Hit http://mirrors.163.com trusty/restricted Sources
Get:17 http://mirrors.163.com trusty/universe Sources [6,399 kB]
Hit http://mirrors.163.com trusty/multiverse Sources
Err http://mirrors.163.com trusty-security/main i386 Packages
404 Not Found [IP: 123.58.190.235 80]
Fetched 41.0 MB in 1min 3s (643 kB/s)
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-security/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-security/main/binary-i386/Packages 404 Not Found [IP: 123.58.190.235 80]
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-security/restricted/binary-i386/Packages Hash Sum mismatch
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-updates/restricted/source/Sources Hash Sum mismatch
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-updates/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://mirrors.163.com/ubuntu/dists/trusty-updates/restricted/binary-amd64/Packages Hash Sum mismatch
......
我估计很多人遇到过此问题,搜索半天发现国内所有中文描述此问题的解决方案的没有一个是靠谱可用的。
随查询英文,方得到正解,为了避免更多人疑惑,很少发帖的我决定把此问题的真正原因告知大家。
先引用 askubuntu.com上面关于此问题的原文解释,
给出正解的人叫做Robie Basak
caches. Some large organisations and ISPs (especially in remote
parts of the world) have transparent caches of which you may not be
aware.
The fundamental issue is that the apt repository format is subject
to race conditions when a mirror is updated. This problem
particularly affects repositories that change rapidly, such as the
development release.
You can track progress on the fix for this in this bug (please mark
yourself as "affects me too" in the bug) and this blueprint. But be
aware that it is a complex issue and may take more than one release
to resolve.
shareimprove this answer
answered Jul 5 '12 at 22:21
大意是:
你所使用的网络供应商,有些会设置一些透明缓存,以增加网络内部速度,减少出口的流量,你获取的某些文件不是源服务器上的真正文件,是从缓存中获取的,当缓存中获取的一些校验信息跟源中不一致的时候,自然提示校验失败,无法继续更新。
此问题实际上跟apt软件仓库的格式设计有关。新发布的版本的软件仓库更新比较频繁,按道理缓存中的文件应该同步更新,可惜因为多个镜像站点的有快慢,因此造成了缓存无法保证一致性。
当网络提供商足够有实力,不设至透明缓存时,这个问题是不存在的。这就是为什么有些人反馈使用无线上网卡(移动、联通的3g网络)就一切OK,一单换回长城宽带、或者宽带通就不行了。
以上就是问题出现的真正原因。
我的家中网络是宽带通,毫无疑问这种网络ISP肯定会设置透明缓存。
解决方案很简单,绕过缓存直接访问站点即可。
如何绕过ISP设置的这种缓存,方法跟绕过长城防火墙一样。
我找了个免费的 ssh 服务代理,
再安装一个 proxychains,在 /etc/proxychians.conf 中设置好你的代理
使用 proxychains sudo apt-get update
更新正常(无论你更新哪一个源,国内或国外)
如果你觉得代理不够快,只要更新完源索引,安装软件时直接 sudo apt-ge install
xxx,即可。在软件中心中安装各类软件也没问题。
这问题根本解决跟 apt repository 的格式设计有关。
不过欧美的 ISP 似乎网络足够好,设置缓存的较少,反正提此问题的人并不多。因此他们是不是会进行改进设计真是无法预知。
还有一种情况会自然解决,就是等源索引渐渐稳定下来后,你的 ISP 的缓存也就跟真实数据保持一致了,此时更新就自然没问题。
新版本发布时更新肯定很频繁,估计大部分新版控无法等待。
以上就是关于引起更新源索引时 Hash Sum
mismatch 问题的真正原因,以及解决方案,希望对各位朋友有所帮助。
apt-get update 更新 ubuntu时出现Hash sum mismatch的原因及解决方法的更多相关文章
- ubuntu 安装时遇到 hash sum mismatch 处理方法
ubuntu安装大软件时,下载经常容易出错,hash sum mismatch是其中一种,说到底还是网络不好,重试很多遍都是这个错误,最后的解决方案是把mismatch说的那个链接用firefox打开 ...
- tcp连接时,BROKEN PIPE错误的原因以及解决方法
问题: 写了一个server和一个client,UNIX套接字的,server不断接收消息并打印出来,client是一个交互程序,输入一个消息回车发送,接着又可以输入消息.出问题了:当server监听 ...
- java写文件时,输出不完整的原因以及解决方法
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bo=new BufferedWriter(new FileWriter("sql语句.txt")) ...
- java写文件时,输出不完整的原因以及解决方法close()或flush()
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")) ...
- 【linux】Ubuntu中shell脚本无法使用source的原因及解决方法
问题现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l `which sh` 提示/bin/sh -> dash 这说明是用dash ...
- 鼠标聚焦到Text输入框时,按回车键刷新页面原因及解决方法
前提 一个form中只有一个输入框,当输入框获取焦点后,点击回车,导致整个页面都刷新,问题解决办法. 1.处理form 在form中添加事件 <form onsubmit="retu ...
- 鼠标聚焦到Input输入框时,按回车键刷新页面原因及解决方法
参考地址:http://blog.csdn.net/xuezhongsong/article/details/6859037 方式1:全局控制回车,13-回车键,27-ESC,113-F2 docum ...
- libevent在windows下用visual studio编译时出现error C2894错误的原因与解决方法
libevent是一个使用很广泛的网络库,今天想了解下它.于是去git clone了一份源码,用vs2005的命令行:nmake -f makefile.nmake编译之,顺利编译通过,生成三个静态库 ...
- apt-get update更新源时,出现“Hash Sum mismatch”问题
当使用apt-get update更新源时,出现下面"Hash Sum mismatch"的报错,具体如下:root@localhost:~# apt-get update.... ...
随机推荐
- PHP7.27: Cookie and Session
<?php // 有的浏览器不支持Cookie,这要考虑的 $cFile="count.txt"; $acctime=time(); if(file_exists($cFil ...
- HDU1521 排列组合(生成函数 背包)
题意 链接 Sol 可以用生成函数做,也可以用组合数做. 生成函数就是无脑算一下阶乘暴力背包,然后最后再乘上\(M\)的阶乘 组合数的方法就是用类似背包的转移,转移的时候考虑当前放的这几个的方案数即可 ...
- 洛谷P2000 拯救世界(生成函数)
题面 题目链接 Sol 生成函数入门题 至多为\(k\)就是\(\frac{1-x^{k+1}}{1-x}\) \(k\)的倍数就是\(\frac{1}{1-x^k}\) 化简完了就只剩下一个\(\f ...
- 2018-10-17 Chrome插件实现GitHub代码翻译v0.0.3
续前文浏览器插件实现GitHub代码翻译原型演示, 通过调用浏览器插件-离线英汉词典的批量查词接口, 实现了源码的初步命名直译. 源码库仍在: program-in-chinese/webextens ...
- django rest framework 与 Vue 整合遇到的坑
前提是已经有了Django项目与前端Vue打包好的dist文件 好,开始整合!!! 当然还是先设置Django的setting.py 1设置模板路径 2 设置静态文件路径 TEMPLATES = [ ...
- uni-app 子组件如何调用父组件的方法
1.在父组件methods中定义一个方法: changeType:function(type){ this.typeActive = type; alert(type); } 2.在父组件引用子组件时 ...
- c# .Net随机生成字符串代码
/// <summary> /// 随机生成字符串 /// </summary> /// <param name="OperationType"> ...
- 修正Percona Monitoring Plugins for Zabbix的一处脚本Bug
今天小试了一把Percona Monitoring Plugins for Zabbix模板,自己辛辛苦苦写的那一大堆Python脚本,貌似用这个模板全都覆盖到了.但是,我也发现最新的版本percon ...
- Oracle的实例恢复解析
在数据库服务器异常断电重启后,数据库会进行实例恢复,那么实例恢复的过程中Oracle做了什么操作呢?参考官网在这里做一下解释,菜鸟水平有限,欢迎勘正. 首先说下实例恢复的定义: Instance re ...
- element-ui 2.4.8 BUG 标签页的最后一个Tab标题没法移除,更新后发现最新版本不存在该问题了 记录下