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

引用:

This is a known issue, and is exacerbated for clients behind proxy
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问题的真正原因,以及解决方案,希望对各位朋友有所帮助。

时间: 2024-10-26 17:23:38

apt-get update 更新 ubuntu时出现Hash sum mismatch的原因及解决方法的相关文章

ubuntu 安装时遇到 hash sum mismatch 处理方法

ubuntu安装大软件时,下载经常容易出错,hash sum mismatch是其中一种,说到底还是网络不好,重试很多遍都是这个错误,最后的解决方案是把mismatch说的那个链接用firefox打开并下载,然后 mv 到 /var/cache/apt/archives/ 下面即可 另注:在下载 ros 时,国内的镜像少了东西,报404错误,也用相似的方法解决,去国外的库里下载同路径名的文件,然后放到cahce去就可以了!

jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法

这真是个让人特别抓心找挠肝的问题,真的差点被这个问题逼的放弃去使用json作为返回类型,而是去用html,但是有的时候就是要较汁一下.(即便现在问题解决了,我还是想说句"妈蛋",来发泄一下) 其实主要还是自己对json的不够了解,但是很纳闷,网上对路的解决方法几乎没有.所以虽然问题很小,但是还是想要分享出来,希望能帮到需要的人. 首先$.post()格式如下: $.post(url,data,success(data, textStatus, jqXHR),dataType) 参数描述

关于javascript的parseInt() 08,09时输出结果为0的原因以及解决方法

先来贴图: 可以发现在使用parseInt()对字符串进行转换时,唯独“08”,“09”转换为0,而其他的都是转换成对应的数字,这到底是什么原因呢? 原来当字符串首位是“0”的时候,js默认其为8进制,所以问题来了,8进制数字只有0-7,所以前面的0-7都没有问题. 然而到了8和9问题就来了,8和9在8进制中是不合格的,所以将其输出为0. 解决方法: 将parseInt的参数加上,指定其转换为10进制就ok了. 唉,还是太年轻!

ubuntu 运行apt-get 时遇到“ Hash Sum mismatch ” waring

//先运行 sudo apt-get clean //再运行 sudo apt-get update --fix-missing 在终端运行以上命令即可

java写文件时,输出不完整的原因以及解决方法close()或flush()

在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")); 用到这个的时候一定不能忘了他的伴侣代码.. bw.close(); 或者 bw.flush(); 实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满.这

鼠标聚焦到Text输入框时,按回车键刷新页面原因及解决方法

前提 一个form中只有一个输入框,当输入框获取焦点后,点击回车,导致整个页面都刷新,问题解决办法. 1.处理form  在form中添加事件 <form onsubmit="return false;">.......</form> 2.增加一个隐藏的输入框,认为改变单个输入框 <input id="hiddenText" type="text" style="display:none" /&g

升级ubuntu,apt-get update出现Hash Sum mismatch

sudo apt-get update 出现Hash Sum mismatch cd /var/lib/apt sudo rm -fr lists sudo mkdir lists sudo mkdir lists/partial 在执行sudo apt-get update it worked fine

SQL中使用UPDATE更新数据时一定要记得WHERE子句

我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 mysql 中,我们可以设置sql_safe_updates 这个自带的参数来解决,,当该参数开启的情况下,我们必须在 UPDATE 语句后携带 WHERE 条件,否则就会报错.set sql_safe_updates=1; 表示开启该参数.下面是开启sql_safe_updates参数后不带  WHE

Ubuntu Hash Sum mismatch 解决方法

有时候通过校园网对Ubuntu14.04进行更新时,会出现以下问题: W: Failed to fetch http://xxxxxxx Hash Sum mismatch 解决方法:打开搜索 →  search: softwares & updates → Ubuntu Software → Download from , 选择中科院(ustc)的源,更换源之后,可以试试重新输入: sudo apt-get update  若问题依旧,输入: sudo gedit /etc/apt/sourc