星期日, 11月 25, 2018

apt 使用 mirror

看到這篇文章:How to select the fastest apt mirror on Ubuntu Linux ,sources.list 裡可以改用 mirror://mirrors.ubuntu.com/mirrors.txt 這樣的 URL,apt 就會自動使用 mirror ,不過 apt 不一定會選到最快的 mirror。
在選最快的 mirror 時,可以用 netselect ,但 debian 才有包 netselect 。文章的留言有人提到一個組合命令可以用來取代 netselect ,我試了之後,發現不能用,稍稍做了調整 (改 sed 以及改用 awk 取 ping 結果):
for mirror in $(wget -qO - mirrors.ubuntu.com/mirrors.txt|sed 's/^http:\/\///;s/\/.*$//') ; do echo $(ping -c 1 $mirror|awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $11}') $mirror ; done|sort -n|grep "^[0-9]"|head -n 20
執行以後的結果:
2.49 mirror01.idc.hinet.net
3.47 debian.linux.org.tw
3.61 ubuntu.cs.nctu.edu.tw
5.45 ftp.tku.edu.tw
13.5 ftp.ntou.edu.tw
33.3 ubuntu.stu.edu.tw
40.8 ftp.ubuntu-tw.net
91.8 mirror.ncunwlab.tk
96.6 ftp.yzu.edu.tw
284 archive.ubuntu.com
看起來是中華電信最快,這時候再用 sed 去替換 sources.list 的來源即可。
sed 's/mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt/http:\/\/mirror01\.idc\.hinet\.net\/ubuntu/' /etc/apt/sources.list | sudo tee /etc/apt/sources.list

沒有留言: