|
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è)贊。
|
|