Ubuntu14.04 更新源时总会出现“Hash校验和不符”的解决方案

来源:互联网 发布:js给div点击框 编辑:程序博客网 时间:2024/04/29 08:30

       最近新装的Ubuntu14.04系统,所以有很多东西需要重新安装,但总会需要去更新源,对于更新源的教程以及源网上有很多教程,如果不出意外的话,是很容易成功的,但是这次更新源是我遇到的最奇葩的一次,无论使用多么新的源,都会出现Hash校验和不符字样,导致更新源失败,后续的一系列操作都做不了。

       如果偶尔出现Hash校验和不符,可能是我们所使用的源不符合要求,出现了问题,可以去网上下载最新源(当然得需要配合相应的系统的源)就可以了。但是如果一直出现,并且出问题的总是那几个固定的文件,那就不是源的问题了。

       而是缓存服务器的问题,部分网络服务商,特别是一些小区网络的服务商,很多都会搞了这么个东西出来。但是他们的缓存策略有问题,只比对文件路径,不考虑域名/IP地址,也不怎么考虑文件更新,即缓存的内容和实际文件的内容可能不一致。

       即对于http://example.com/a/b/c.dat这么一个文件,如果被收入缓存,那么你访问其他任意域名下的/a/b/c.dat文件都会去读取被缓存的文件。如果http://example.com/a/b/c.dat有了改变,缓存服务器上的对应文件不一定能跟着更新。而ubuntu大部分源的文件路径是一致的,所以如果163源中的 http://mirrors.163.com/ubuntu/dists/tru ... ources.bz2 被收入缓存,那么你访问官方源 http://archive.ubuntu.com/ubuntu/dists/ ... ources.bz2 时,由于路径都是/ubuntu/dists/trusty/main/source/Sources.bz2,还是获取的是缓存服务器上的缓存文件。这个可用wget验证。如果缓存服务器上文件过时了,就会出现Hash Sum Mismatch。

      更多的解决方案可以参考:http://forum.ubuntu.com.cn/viewtopic.php?f=77&t=465499

      但是我只尝试了其中的一种方法——更换源路径,大部分源都有一个指向自身的软链接,比如打开阿里云的源 http://mirrors.aliyun.com/ubuntu/ ,里面有个ubuntu目录,点进去内容是一样的。这样就给了我们一个绕开缓存服务器的方法。

      把sources.list中的http://mirrors.aliyun.com/ubuntu/改成http://mirrors.aliyun.com/ubuntu/ubuntu/,或者后面还可以再深几层http://mirrors.aliyun.com/ubuntu/ubuntu/ubuntu/ubuntu/ubuntu/,一般就没有被缓存服务器收录了。

      注意不是所有的源都会有那个ubuntu软链接,比如网易源就没有http://mirrors.163.com/ubuntu/

      开始我只是抱着试一试的心态,却想不到真的解决了,后面的一些列依赖库等轻松解决吐舌头


       

0 0
原创粉丝点击