找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1428|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

apt-get update錯(cuò)誤應(yīng)對(duì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-6 16:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
sudo apt-get update通常執(zhí)行后,要接著執(zhí)行sudo apt-get update。
如果發(fā)生hashi校驗(yàn)不符的錯(cuò)誤:
如果只是偶爾出現(xiàn)Hash校驗(yàn)和不符(Hash Sum Mismatch),則可能是所用的源正在和官方同步,如果一直出現(xiàn),并且出問(wèn)題的總是那固定的幾個(gè)文件,就不是源的問(wèn)題了

世界上有一種東西叫緩存服務(wù)器:http://baike.baidu.com/view/2396471.htm
部分網(wǎng)絡(luò)服務(wù)商,特別是一些小區(qū)網(wǎng)絡(luò)的服務(wù)商,很多都搞了這么個(gè)東西出來(lái)

但是他們的緩存策略有問(wèn)題,只比對(duì)文件路徑,不考慮域名/IP地址,也不怎么考慮文件更新,即緩存的內(nèi)容和實(shí)際文件的內(nèi)容可能不一致。

即對(duì)于http://example.com/a/b/c.dat這么一個(gè)文件,如果被收入緩存,那么你訪問(wèn)其他任意域名下的/a/b/c.dat文件都會(huì)去讀取被緩存的文件。如果http://example.com/a/b/c.dat有了改變,緩存服務(wù)器上的對(duì)應(yīng)文件不一定能跟著更新。

而ubuntu大部分源的文件路徑是一致的,所以如果163源中的 http://mirrors.163.com/ubuntu/dists/tru ... ources.bz2 被收入緩存,那么你訪問(wèn)官方源 http://archive.ubuntu.com/ubuntu/dists/ ... ources.bz2 時(shí),由于路徑都是/ubuntu/dists/trusty/main/source/Sources.bz2,還是獲取的是緩存服務(wù)器上的緩存文件。這個(gè)可用wget驗(yàn)證。如果緩存服務(wù)器上文件過(guò)時(shí)了,就會(huì)出現(xiàn)Hash Sum Mismatch。

解決方法呢有這么幾個(gè)
1、換用路徑不同的源。https://launchpad.net/ubuntu/+archivemirrors 中按地區(qū)列出了世界上所有在官方有注冊(cè)的源,可以自己點(diǎn)進(jìn)去看看。比如 https://launchpad.net/ubuntu/+mirror/mirror.anl.gov 中就可以看到它的路徑不是一般的/ubuntu,而是/pub/ubuntu/,就有可能沒(méi)被你當(dāng)?shù)氐木彺娣⻊?wù)器收入。這種源大多都是國(guó)外大學(xué)所有。

2、更換源路徑。大部分源都有一個(gè)指向自身的軟鏈接,比如打開(kāi)阿里云的源http://mirrors.aliyun.com/ubuntu/,里面有個(gè)ubuntu目錄,點(diǎn)進(jìn)去內(nèi)容是一樣的。這樣就給了我們一個(gè)繞開(kāi)緩存服務(wù)器的方法。
把sources.list中的http://mirrors.aliyun.com/ubuntu/改成http://mirrors.aliyun.com/ubuntu/ubuntu/,或者后面還可以再深幾層http://mirrors.aliyun.com/ubuntu/ubuntu/ubuntu/ubuntu/ubuntu/,一般就沒(méi)有被緩存服務(wù)器收錄了
注意不是所有的源都會(huì)有那個(gè)ubuntu軟鏈接,比如網(wǎng)易源就沒(méi)有http://mirrors.163.com/ubuntu/

3、通過(guò)代理服務(wù)器訪問(wèn)。設(shè)置環(huán)境變量http_proxy就可以讓apt-get使用http代理了,新立得可以直接在選項(xiàng)中設(shè)置。

值得一提的是,緩存服務(wù)器的收錄標(biāo)準(zhǔn)一般還會(huì)看文件大。ㄌ筇《疾粫(huì)收錄)以及文件訪問(wèn)的頻繁度,所以如果你使用的是上面的1或2號(hào)方法,則不要太過(guò)頻繁的更新。
有人講更換DNS可以奏效:
8.8.8.8,202.96.128.86, 172.18.1.12, 60.190.217.130

如何發(fā)現(xiàn)W: Duplicate sources.list entry http://security.ubuntu.com ...
有人指出:
Use this to find duplicate lines;

grep -v ^# /etc/apt/sources.list | sort | uniq -c | sort
有人指出:
cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list
The command does this:  
cat reads the file and passes the content to perl which removes the duplicate lines. The result is then saved > in a temporary file which is then moved to replace the original /etc/apt/sources.list file.
搞清楚這個(gè)命令可以協(xié)助Linux入門了。

網(wǎng)摘:只更新特定的源:
添加ppa后只更新此ppa:
update-ppa()
    { sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
    }
寫(xiě)入~/.bashrc,source一下,就可以直接用,是不是很方便?覺(jué)得方便就按個(gè)贊。                                       







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表