ports.ubuntu.com のミラーサイトを探せ
クロスビルドするときにターゲットのルートファイルシステムをaptでとってくることをしていたのですが、arm64のbionic(= ubuntu 18.04)のダウンロードが遅いのが気になります。ports.ubuntu.com
からダウンロードしていたのですが、ミラーサイトを探すことにしました。
ubuntuのaptリポジトリのミラーサイト
ubuntuのaptリポジトリのミラーサイトはここにまとめられています。
日本のサイトもいくつかあるのですが、残念ながらi386とamd64以外のアーキテクチャのものは置いてませんでした。
ports.ubuntu.com のミラーサイトは?
検索したらちょうどいいものを見つけました。
このサイトに載っているスクリプトをfind-mirrors
というファイルに保存して、以下のように実行しました。
$ bash find-mirrors arm64 bionic main |grep FOUND |awk '{print $2}' > list
すると以下のような結果が得られました。
http://mirror.kumi.systems/ubuntu-ports/
http://mirrors.layeronline.com/ubuntu/
http://mirror.telcotech.com.kh/Linux/ubuntu-releases/
http://mirrors.portafixe.com/ubuntu/archive/
http://mirror.bjtu.edu.cn/ubuntu/
http://mirrors.cqu.edu.cn/ubuntu/
http://www.ubuntu.org.tw/
http://in.mirror.coganng.com/ubuntu-ports/
http://mirror.arvancloud.com/ubuntu/
http://ftp.daum.net/ubuntu/
http://suro.ubaya.ac.id/ubuntu/
http://ftp.lanet.kr/ubuntu-ports/
http://mirror.misakamikoto.network/ubuntu-ports/
http://jp.mirror.coganng.com/ubuntu-ports/
http://ftp.harukasan.org/ubuntu-ports/
http://ntc.net.np/ubuntu/
http://cesium.di.uminho.pt/pub/ubuntu-archive/
http://ubuntu.mirror.cambrium.nl/ubuntu/
http://mirror.coganng.com/ubuntu-ports/
http://dafi.inf.um.es/ubuntu/
http://mirrors.coreix.net/ubuntu/
http://mirrors.us.kernel.org/ubuntu/
http://mirrors.ocf.berkeley.edu/ubuntu-ports/
http://mirror.d.umn.edu/ubuntu/
http://mirror.vcu.edu/pub/gnu+linux/ubuntu/
しかし、これらのうちのどれを使うのがよいでしょうか?
ネットワーク的に近くて、ダウンロードの速度が速いものがよいのですが。
curlコマンドでダウンロード速度を測る
検索したらよさそうなものを見つけました。
即興で以下のようなスクリプトを書いてみました。
ARCH=arm64
DIST=bionic
REPO=main
for url in `cat list`; do
echo -n $url
curl -w " code: %{http_code}, speed: %{speed_download}\n" -o /dev/null -s "$url/dists/$DIST/$REPO/binary-$ARCH/"
done
比較のために http://ports.ubuntu.com
もlist
に追加して実行しました。
http://ports.ubuntu.com/ code: 200, speed: 1842
http://mirrors.layeronline.com/ubuntu/ code: 302, speed: 0
http://mirror.bjtu.edu.cn/ubuntu/ code: 301, speed: 854
http://ubuntu.letscloud.io/ubuntu/ code: 301, speed: 57
http://mirror.telcotech.com.kh/Linux/ubuntu-releases/ code: 301, speed: 608
http://www.ubuntu.org.tw/ code: 301, speed: 0
http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/ code: 200, speed: 23694
http://ubuntu.hbcse.tifr.res.in/ubuntu/ code: 301, speed: 211
http://mirror.arvancloud.com/ubuntu/ code: 302, speed: 0
http://suro.ubaya.ac.id/ubuntu/ code: 301, speed: 183
http://mirror.iranserver.com/ubuntu/ code: 301, speed: 228
http://mirror.faraso.org/ubuntu/ code: 301, speed: 279
http://jp.mirror.coganng.com/ubuntu-ports/ code: 200, speed: 32033
http://mirror.misakamikoto.network/ubuntu-ports/ code: 200, speed: 4298
http://mirror.isoc.org.il/pub/ubuntu/ code: 301, speed: 289
http://ftp.daum.net/ubuntu/ code: 301, speed: 1370
http://ftp.lanet.kr/ubuntu-ports/ code: 200, speed: 12699
http://ftp.harukasan.org/ubuntu-ports/ code: 200, speed: 10006
http://ntc.net.np/ubuntu/ code: 301, speed: 214
http://mirror.ihost.md/ubuntu/ code: 200, speed: 573
http://mirror.coganng.com/ubuntu-ports/ code: 200, speed: 2089
http://mirrors.coreix.net/ubuntu/ code: 301, speed: 529
http://mirrors.us.kernel.org/ubuntu/ code: 301, speed: 380
http://mirrors.ocf.berkeley.edu/ubuntu-ports/ code: 200, speed: 16131
http://mirror.d.umn.edu/ubuntu/ code: 301, speed: 668
status codeが301や302でspeedが0になっているものはどう扱うのがいいかな?
もうちょっと工夫が必要そう。
netselectコマンド
また、ツイッターで以下のページを教えていただきました。
これはICMPパケット(おおまかな理解ではping)の遅延時間でネットワーク的な近さを判断するもののようです。
$ sudo netselect -s 20 -t 40 `cat list`
9 http://mirror.arvancloud.com/ubuntu/
9 http://mirrors.layeronline.com/ubuntu/
9 http://mirrors.layeronline.com/ubuntu/
10 http://mirror.arvancloud.com/ubuntu/
37 http://jp.mirror.coganng.com/ubuntu-ports/
105 http://mirror.misakamikoto.network/ubuntu-ports/
105 http://ftp.harukasan.org/ubuntu-ports/
127 http://ftp.lanet.kr/ubuntu-ports/
156 http://ftp.harukasan.org/ubuntu-ports/
292 http://ftp.harukasan.org/ubuntu-ports/
369 http://mirror.coganng.com/ubuntu-ports/
648 http://ports.ubuntu.com/
910 http://suro.ubaya.ac.id/ubuntu/
920 http://mirrors.ocf.berkeley.edu/ubuntu-ports/
1130 http://mirrors.us.kernel.org/ubuntu/
1226 http://ports.ubuntu.com/
1271 http://ntc.net.np/ubuntu/
1430 http://mirrors.coreix.net/ubuntu/
1438 http://ubuntu.letscloud.io/ubuntu/
1803 http://mirror.ihost.md/ubuntu/
でもこれはICMPパケットを返さないサーバは除外されてしまいますね。
あと、上位4つのやつは302 Moved Temporarily
が返ってきて中身がない ..
http://jp.mirror.coganng.com/ubuntu-ports/
は中身はありますが、誰が運営しているのかがよくわからない .. ご利用は自己責任で。
参考
今回は使いませんでしたが、twitterで以下のページも教えてもらいました。
Discussion