内容简介:今天在某一台 Ubuntu 18.04.1 LTS 主機上執行通常會有以下處理方式:我後來查出是以下檔案的內容不一樣了:
今天在某一台 Ubuntu 18.04.1 LTS 主機上執行 apt update
更新套件來源資訊,不過卻一直發生 Hash Sum mismatch 的錯誤,一度懷疑 Ubuntu 的套件來源發生問題,浪費了十幾分鐘查問題,到最後竟然是換了 ISP 線路才正常。
錯誤訊息
apt update
Get:21 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [526 kB] Err:21 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages Hash Sum mismatch Hashes of expected file: - Filesize:525764 [weak] - SHA256:e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0 - SHA1:d589b82b10751d8c12cecedde103cce3b818c15c [weak] - MD5Sum:e5bff5faf851cd2c241f048a42185eae [weak] Hashes of received file: - SHA256:7983fc1019239792f31690cfebe04116a15911c9c825055cfc884009b3f35028 - SHA1:72c2cf0fb90b19b66b2a2fb88102e4f9067ecdd6 [weak] - MD5Sum:dd2a727af1900ed5293d7015f3130127 [weak] - Filesize:525764 [weak] Last modification reported: Tue, 19 Feb 2019 07:09:43 +0000 Release file created at: Tue, 19 Feb 2019 11:15:50 +0000
發生 Hash Sum mismatch 常見的處理方式
通常會有以下處理方式:
-
清空 APT 快取
sudo rm -rf /var/lib/apt/lists/* sudo apt clean sudo apt update
-
更換 Mirror 網址
也有可能是特定鏡像主機(Mirror Host)發生檔案異常,可以試試不同的 鏡像主機位址 。
-
切換不同的 ISP 線路
有些 ADSL 網路提供者會架設透明的代理伺服器(Transparent Proxy),以節省頻寬使用,可是這樣很有可能會讓用戶端快取到舊版的內容,導致 SHA256 雜湊不匹配,就會引發這個問題。
我這次的問題,就是將筆電的網路切換到手機的 4G 線路才正常!
追查錯誤
我後來查出是以下檔案的內容不一樣了:
http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/binary-amd64/by-hash/SHA256/e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0
首先,我先嘗試透過 SHA256 檢查檔案雜湊值,只要雜湊值不一樣,就會引發 Hash Sum mismatch 的問題。
wget -q http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/binary-amd64/by-hash/SHA256/e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0 sha256sum e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0 rm -f e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0
這段命令的執行結果,必須完全等同於檔名,才是驗證正確的檔案內容。
e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0 e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0
但我家中的 ADSL 網路,卻出現以下結果:
7983fc1019239792f31690cfebe04116a15911c9c825055cfc884009b3f35028 e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0
確定下載的檔案不一樣,接著就要看檔案內容差異了。
我用不同網路下載相同檔案,並透過 xz
進行解壓縮,下載與解壓縮的命令如下:
curl -L -o e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0.xz http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/binary-amd64/by-hash/SHA256/e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0 xz -d e084a46b59774b00b1513bc6760173cf8398756416523c1a38604a28ba7011d0.xz
比對兩個網路下載的檔案後發現,內容真的不太一樣,如下圖示:
差異的部分相當詭異,只有 Phased-Update-Percentage
的部分有變化,這部分可以從 PhasedUpdates - Ubuntu Wiki 了解是什麼玩意。無法通過 SHA256 驗證的版本,其 Phased-Update-Percentage
數值較小,能通過 SHA256 驗證的版本,其數值較大。
不過這看起來不像 Proxy Server 會發生的問題,因為如果他快取到舊版內容,照理說檔名不會是這個名字,因為檔名必須等於 SHA256 雜湊後的值才對,怎麼會是這個值?如果是 ISP 造成的,為什麼我的 ISP 要修改這個檔案內容?我目前尚無法解釋這問題是怎樣造成的,如果有知道原因的人,麻煩留言給我,謝謝!
以上所述就是小编给大家介绍的《Ubuntu 18.04.1 LTS 執行 apt update 遇到 Hash Sum mismatch 的處理方式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。