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/

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


       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章