web-dev-qa-db-ja.com

コマンドラインから最速のミラーをどのように選択しますか?

Ubuntu Serverの新規インストールで、sources.listファイルをコマンドラインから最速のサーバーで更新したい。私はこれがGUIで簡単にできることを知っていますが、コマンドラインからそれを行う簡単な方法はないようです?

138
Evan
パッケージnetselect-apt 
 
 dapper(net):netselect 
 [universe] 
 0.3.ds1-5:all [.____。で最速のDebianミラーを選択します。 ] hardy(net):netselect 
 [universe] 
 0.3.ds1-11:all 
で最速のDebianミラーを選択します
 Pakket apt-spy 
 
 dapper(admin):帯域幅テストに基づいてsources.listファイルを書き込みます
 [universe] 
 3.1-14 :AMD64 i386 powerpc 

セキュリティの問題のため、新しいUbuntuには含まれていないようです: バグレポート

しかし..私は通常、pingを使用して、ある場所への接続速度を調べます。ホップの量と遅延。

22
Rinzwind

もう検索する必要はありません- ajmitch には 説明済み があるので、deb mirrorを使用して自動的に最適なミラーを選択できます。

apt-get 現在サポート 位置に基づいて適切なミラーを自動的に選択する「ミラー」メソッド。パッティング:

deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse

/etc/apt/sources.listファイルの一番上にあるのは、地理的な場所に基づいて自動的にミラーを選択するために必要なものだけです。

Lucid(10.04)、Maverick(10.10)、Natty(11.04)、およびOneiric(11.10)ユーザーは、preciseを適切な名前に置き換えることができます。

147
badp

古き良きnetselectといくつかのgrepマジックを使用して、常に機能する1つの方法を次に示します。

端末中毒者の「最高のサーバーを見つける」ハック!

  • アーキテクチャ用のダウンロードとdpkg -inetselectDebianウェブサイトから (約125 KB、依存関係なし)
  • これを使用して、最新または最大6時間遅れて、現在の場所から最速のUbuntuミラーを見つけます(Markdownでうまく分割されないので、以下で説明します)。

    Sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP | statusSIX" | grep -o -P "(f | ht)tp:// [^ \"] * "` 
    
  • netselect

    1. -vは少し冗長になります。同じIPにマッピングされた別のミラーがマージされたことを示す進行状況のドットとメッセージを表示する必要があります。
    2. -sNは、最後に必要なミラーの数を制御します(例:トップ10ミラー)
    3. -tNは、各ミラーの速度テストの期間です(デフォルトは10です。数値が大きいほど、時間がかかりますが、結果の信頼性は高くなります)。
  • これはバッククォートです(説明のためだけに貼り付けないでください)

     wget -q -O- https://launchpad.net/ubuntu/+archivemirrors 
     | grep -P -B8 "status(UP | SIX)" 
     | grep -o -P "(f | ht)tp:// [^ \"] * "
    
    1. wgetは、最新のミラーステータスを https://launchpad.net/ubuntu/+archivemirrors から取得します。
    2. 最初のgrepは、実際のftp/http URLを含む8行の前のコンテキストとともに、最新または6時間遅れのミラーを抽出します
    3. 2番目のgrepは、これらのftp/http URLを抽出します
  • 米国カリフォルニア州のサンプル出力を次に示します。

     60 ftp://mirrors.se.eu.kernel.org/ubuntu/
    70 http://ubuntu.alex-vichev.info/
    77 http:// ftp.citylink.co.nz/ubuntu/
    279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
    294 http://mirror.umd.edu/ubuntu/ 
     332 http://mirrors.rit.edu/ubuntu/
    364 ftp://pf.archive.ubuntu.com/ubuntu/
    378 http:// mirror。 csclub.uwaterloo.ca/ubuntu/
    399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
    455 http://ubuntu.mirror.root.lu/ubuntu/ 
    
    • 「ランク」は任意のメトリックです。通常は低いほど良いです。
    • Kernel.org Sweden-EUミラーとNZミラーがCaliforniaのトップ3に入っている理由を知りたいのであれば、私もそうです。 -)真実は、netselectは、複数のミラーが単一のIPにマップされるときに表示するのに常に最適なURLを選択するとは限らないということです。番号3はnz.archive.ubuntu.comとも呼ばれます!
49
ish

あなたのIP用にmirrors.ubuntu.comに基づいて(ダウンロード速度で)最高のミラーを選択するOneliner。

curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I {} sh -c 'echo `curl -r 0-102400 -s -w %{speed_download} -o /dev/null {}/ls-lR.gz` {}' |sort -g -r |head -1| awk '{ print $2  }'
25
KAndy

Pythonスクリプト TCPレイテンシーが最も低いミラーを見つけると書いた。

また、スクリプトは launchpad から取得した帯域幅とステータスデータを提供し、新しいsources.listファイルを自動的に生成するか、リストから選択したミラーを使用します。

マシンへの待ち時間が最も短い5つのUSミラーから選択できる使用例:

$ apt-select --country US -t 5 --choose
17
John B

Mirrors.ubuntu.com/mirrors.txtにリストされているサーバーをテストし、最速のものを返す簡単なpingベースのnodejsスクリプトを開発しました。

Sudo npm install -g ffum
ffum

役に立つと思うか、何か提案があれば教えてください(=

5
tentaculo

これがOPの質問に直接答えないことは知っていますが、Ubuntuのデスクトップ/ GUIバージョンには、最適なミラーを見つけるボタンがあります。それはかなりうまくいくように思えたので、簡単に調べましたが、フォローアップする時間はありませんでした。

私がそれを立ち上げた理由は、コマンドラインユーティリティにするのにかなり簡単で使いやすいと思うからです。

誰かが興味を持っている場合、テストは次の場所にあるようです。

/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py

繰り返しますが、それは私が得た限りではありますが、だれかがそれを望んだ場合に備えて、ここに置いておきたいと思いました。もう少し時間があれば、おそらくまた取り上げるでしょう。

4
copeland3300

高速ミラーを見つけるコマンド

On buntu 18.04を実行すると良い結果が得られました

 python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py

これは、「時間」別に分類されたミラーのリストを出力し(説明なし)、それから最高ランクのミラーの1つを使用しました。

詳細

私にとっては、/etc/apt/sources.listでミラーとして設定してから、そのコマンドによって出力された上位の結果のいくつかをテストするのに役立ちました

time Sudo apt update

そのミラーからパッケージリストをダウンロードするのにかかった時間を確認します。上位3つの提案をテストしましたが、それらはすべて高速でしたが、time Sudo apt updateテストでは、そのうちの1つが他の2つの2倍の速さでした。

python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.pyの出力例を次に示します。

mirror: es-mirrors.evowise.com - time: 0.183778047562
mirror: it-mirrors.evowise.com - time: 0.18604683876
mirror: la-mirrors.evowise.com - time: 0.192630052567
mirror: ny-mirrors.evowise.com - time: 0.208723068237
mirror: mirrors.accretive-networks.net - time: 0.385910987854
mirror: mirror.team-cymru.org - time: 0.46785402298
mirror: mirrors.psu.ac.th - time: 1.64231991768
and the winner is: es-mirrors.evowise.com
2
ntc2

ユーティリティでこれを行うには、次のような単純なbashスクリプトとしてそのようなユーティリティを実装できます。これは、pip/nodejsを必要とせずにユーティリティを使用する場合に便利です。

#!/bin/bash
if [ -z "$1" ]
then
    echo Usage:  Sudo $0 http://mirrors.ubuntu.com/mirrors.txt
    echo OR consider one of...
    for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
    do 
        (
            Host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
            echo -e `ping $Host -c1 | grep time=|sed s,.*time=,,`:'  \t\t'$mirror
        ) &
        done
    wait
    exit 1
fi

OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb\ | head -n1 | cut -d\  -f2`

[ -e  /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

cp /etc/apt/sources.list /etc/apt/sources.list.tmp
sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list
0
gmatht

受け入れられた回答を含むその他の回答は、Ubuntuでは動作しないnetselect-aptapt-spyなどのDebianパッケージを推奨しているため、(Ubuntu 11.04以降では)無効になりました。

以下に、この質問に対する2つの異なるworking回答があります。

  1. apt-getmirror:メソッドを使用

    この方法では、IPに基づいてUbuntuサーバーに近くのミラーのリストを要求し、そのうちの1つを選択します。最も簡単な代替策として、最も近いミラーが最速でない場合があるという小さな欠点があります。

  2. netselectを使用したコマンドラインfoo
    netselectツールを使用して、地理的にではなく、ネットワーク上で最も高速に更新されたサーバーを見つける方法を示します。 sedを使用して、sources.listのミラーを置き換えます。

sedを使用して、sources.listのミラーを置き換えます

一部のソースはパスの一部として追加フォルダーを使用するため、代替セパレーター構文を使用した方がよい場合があります。

Sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
0
k0pernikus

以下を使用してミラーを自動選択します(deb-srcを無効にします)

Sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list
0
iheggie