在Linux上执行apt-get update时出现 Hash Sum mismatch 错误的解决方法

最近我在自己的安卓手机上成功的安装了一个Linux/debian系统。但在这个Debian系统里安装其它软件时执行apt-get update却出现了错误,导致软件无法安装。错误的提示信息是这样的:

W: Failed to fetch http://ftp.tw.debian.org/debian/dists/jessie/main/i18n/Translation-en Hash Sum mismatch

E: Some index files failed to download. They have been ignored, or old ones used instead.

用谷歌搜索apt-get update Hash Sum mismatch,能搜很多更它相关的条目,很多人指出这是本地新旧缓存导致的问题,推荐做法是:

apt-get clean
rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update
apt-get upgrade

这种做法并没有解决我的问题,执行这些命令后任然出现Hash Sum mismatch错误。

还有人指出是旧版的 apt 软件的一个bug,不能正确的解析压缩过的metadata files,解决方法是,要么升级一下 apt,要么这么做:

$ apt-get update -o Acquire::CompressionTypes::Order::=gz

我照做了,仍然报相同的错误。

上面我查看的都是英文条目,也就是国外网友遇到这种报错信息给出的解决方法。在一无所获后,我看了一下中文条目,发现有网友提出了不同的观点。有网友说,这种错误是因为你使用的是宽带通/长城宽带,换成其它宽带就行了,我用手机流量上网试了一下,这个问题竟然奇迹的解决了。

为什么?

你所使用的网络供应商,有些会设置一些透明缓存,以增加网络内部速度,减少出口的流量,你获取的某些文件不是源服务器上的真正文件,是从缓存中获取的,当缓存中获取的一些校验信息跟源中不一致的时候,自然提示校验失败,无法继续更新。

原因竟然是一些不靠谱的网络供应商喜欢自作聪明,从自己的缓存里寻找你要访问的数据,用来降低带宽,但技术考虑不周期,导致用户使用时出现错误。如果我们开启 apt-get debug :

# apt-get update -o Debug::Acquire::http=true

这样做后,你可以跟踪到apt-get的数据是从原数据源获得的,还是被重定向到了某个缓存服务器。

特别的,我深有体会的一点是,宽带通/长城宽带特别喜欢搞这些事情,喜欢拦截、修改用户访问的网页,然后在里面添加自己的广告用来盈利,如果你在使用宽带通/长城宽带浏览网页时,网页底部突然弹出广告,这很有可能就是宽带通/长城宽带这些宽带服务商干的恶心事。

同样是Hash Sum mismatch的错误,在国内,也变成了具有中国特色的Hash Sum mismatch错误和具有中国特殊的解决方案。

阅读余下内容
 

发表评论

电子邮件地址不会被公开。 必填项已用*标注


京ICP备12002735号