Ubuntu 關於引起更新源索引(apt-get update)時Hash Sum mismatch的問題

說明

首先這個問題國內出現的比較多,小寬帶廠商(例如寬帶通、長城、軒惠)等出現的比較多
對於此問題的描述和解決方案中文的資料很亂,且很少有從根本上解決問題的

問題分析

中文真正說出問題根本的帖子爲 關於引起更新源索引時Hash Sum mismatch問題的真正原因及解決方案

先引用 askubuntu.com上面關於此問題的原文解釋
給出正解的人叫做Robie Basak

This is a known issue, and is exacerbated for clients behind proxy caches. Some large organisations and ISPs (especially in remote parts of the world) have transparent caches of which you may not be aware.

The fundamental issue is that the apt repository format is subject to race conditions when a mirror is updated. This problem particularly affects repositories that change rapidly, such as the development release.

You can track progress on the fix for this in this bug (please mark yourself as “affects me too” in the bug) and this blueprint. But be aware that it is a complex issue and may take more than one release to resolve.
shareimprove this answer

answered Jul 5 ‘12 at 22:21

作者的解釋爲

你所使用的網絡供應商,有些會設置一些透明緩存,以增加網絡內部速度,減少出口的流量,你獲取的某些文件不是源服務器上的真正文件,是從緩存中獲取的,當緩存中獲取的一些校驗信息跟源中不一致的時候,自然提示校驗失敗,無法繼續更新。

此問題實際上跟apt軟件倉庫的格式設計有關。新發布的版本的軟件倉庫更新比較頻繁,按道理緩存中的文件應該同步更新,可惜因爲多個鏡像站點的有快慢,因此造成了緩存無法保證一致性。

當網絡提供商足夠有實力,不設至透明緩存時,這個問題是不存在的。這就是爲什麼有些人反饋使用無線上網卡(移動、聯通的3g網絡)就一切OK,一單換回長城寬帶、或者寬帶通就不行了。

解決方案

  • 上文作者的解決方案

    proxychains加上免費SSH服務器 - 請看原文

  • 花錢買VPN

    搞不明白我國的“長城”是咋回事兒,直接訪問谷歌等被屏蔽,且免費方案出一個新的他們搞亂一個新的,但是卻可以用VPN來訪問 – 是要我們掏錢買VPN麼

  • 本文作者的解決方案

    如果是少量數據,可以用一些免費的SSH服務器啊,VPN啊都可以
    如果是網頁的數據,可以用 goagent, 這也是我用的最多的工具
    本文的問題解決方案在於這是可以設置代理的

    $ sudo apt-get -o Acquire::http::proxy="http://192.168.31.122:8087/" update
    $ sudo apt-get -o Acquire::http::proxy="http://192.168.31.122:8087/" install default-jre

    其中的 http://192.168.31.122:8087/ 爲 筆者的 goagent 的代理端口。至於爲啥用 192.168.31.122,是因爲提供代理的是一臺Windows機器;爲啥用Windows系統,因爲簡單,還因爲有工具可以方便的找可用 google IP地址。Windows上找到的IP地址也可以給其他系統上運行的 goagent 用啊?是的,但是我不習慣。。。

參考:

http://forum.ubuntu.org.cn/viewtopic.php?f=52&t=423516
http://blog.sina.com.cn/s/blog_4a0a8b5d0101i5z7.html

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