喷完了天朝的GFW,我们接着喷天朝的运营商。
明天科四模拟,科四的题目还一点没看。下午趁着休息的功夫,想尝试一下kubernetes。然而,最后由于种种原因,重装系统了。幸亏是拿家里的实验最实验,否则又得心疼死。
重装完系统之后,打算把重新装软件,恢复成之前的样子,然而,在通过ppa添加的时候,老是提示我Hash Sum mismatch,包也下载不下来。
这就很尴尬了。之前还好好的。最主要的是,我打开笔记本,发现笔记本在执行sudo apt-get update的时候,竟然也提示我,Hash Sum mismatch。但在学校时怎么就好好的!!!
Google了很长时间,也没找到答案。后来觉得可能是天朝的特有的问题,可能又是被GFW屏蔽了。就用中文搜索试了一下,竟然还真是天朝的特色!!
只不过,这次不是GFW的问题。而是我们天朝的运营商的问题。
天朝的部分运营商,会设置透明缓存,这样我们得到的东西,实际上是缓存的,如果源服务器上的内容更新了,自然就会出现上面的那个错误了。
而**apt-get **默认也是使用缓存的。这本身是件好事,可以提高效率。但是配合上咱们天朝的运营商,就不是什么好事了。因为源服务器上的内容如果正处于开发状态,很可能会经常更新。运营商的缓存就经常是过期的。
最后怎么解决的呢?
我注意到,我们添加一个ppa,实际上都是在在/etc/apt/source.list.d这个文件夹的中创建一个相应的文件,其内容是deb http://ppa.launchpad.net/[other],其中other代指其他的部分。我估计运营商是根据域名做的缓存,所以将其中的ppa.launchpad.net换成了其IP,就能正确的更新并下载包了。
参考其他的文章,说可以通过代理绕过运营商缓存。但是我之前一直都是开着代理的,也不好使。其实这种做法本身理论上没有问题的,就是不知道我在做的时候,出了什么问题。
下面给出两篇文章,各位可以自行参考,都是来解决这个问题的:
关于引起更新源索引时Hash Sum mismatch问题的真正原因及解决方案 更新 Ubuntu 系统,避免报错「校验和不符」