1. 程式人生 > >Ubuntu14.04 更新源時總會出現“Hash校驗和不符”的解決方案

Ubuntu14.04 更新源時總會出現“Hash校驗和不符”的解決方案

       最近新裝的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/

  開始我只是抱著試一試的心態,卻想不到真的解決了,後面的一些列依賴庫等輕鬆解決吐舌頭