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


137

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


3
正規表現では、。文字は任意の文字を意味します。。あなたはそれを一致させたい場合は、\でエスケープする必要があり、そうus.archive [..] .ARCHIVE [..] \私達にする必要があります
エギル


2
私の場合、#記号をスラッシュ(/)に置き換える必要がありました。そうでなければ私はsed: -e expression #1, char 53: unterminated sのコマンドを受け取りました。
イーサンリロイ

@EthanLeroy Ubuntu 12.04.3でも同じ
ログオフ

ハッシュではなくスラッシュにする必要があります。
マットH

回答:


22
パックnetselect-apt

    dapper(net):netselectで最速のDebianミラーを選択してください 
    [宇宙]
    0.3.ds1-5:すべて
    hardy(net):netselectで最速のDebianミラーを選択してください 
    [宇宙]
    0.3.ds1-11:すべて
パックapt-spy

    dapper(admin):帯域幅テストに基づいてsources.listファイルを書き込みます 
    [宇宙]
    3.1-14:amd64 i386 powerpc

セキュリティの問題のため、新しいUbuntuには含まれていません。バグレポートを参照してください。

しかし..私は通常、ある場所への接続の速度を見つけるためにpingを使用します。ホップの量と遅延。


4
netselect-aptはUbuntu 12.04で利用できないようです
-offby1

正しい:こちらを参照してくださいbugs.launchpad.net/ubuntu/+source/netselect/+bug/337377
Rinzwind

8
これは最も支持されたものではなく、最良の答えでもありません。次のものを確認してください
-ntg

どの答えが「次の答え」であるかは変わっているかもしれません。
-gmatht

apt-spyはdebian 9でなくなりましたが、netselect-aptは問題あり
ません

147

あなたは、もはや任意の検索を行う必要はありません-と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、適切な名前に置き換えることができます。


素晴らしいヒント。変更を行った後、最も近いミラーを使用するsudo apt-get update前に実行する必要があるapt-get installことに注意してください。
サイモンイースト


23
良いヒントですが、私の場合は役に立ちません。それはジオロケーションで動作し、ローカルサーバーを提供します。ここでは、ネットワークの時間的距離が重要な要素であり、空間的距離ではありません。
jarondl


1
@marathonは少なくとも18.04+に修正されました
パブロA

49

ここでは常に良い古い使用して、動作する一つの方法だnetselectと、いくつかgrepの魔法は:

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

  • Debian Webサイトからdpkg -i netselectアーキテクチャーをダウンロードしてください(約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. wgethttps://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ミラーがカリフォルニアのトップ3にある理由を疑問に思っているなら、私もそうです;-)真実は、netselectいつ表示するのに最適なURLを常に選択するとは限らないということです複数のミラーが単一のIPにマップされます。番号3はnz.archive.ubuntu.com

9
netselectは、udpまたはicmpの待ち時間が短いミラーを選択します。必ずしもより多くの帯域幅を提供できるミラーを選択するとは限りません。
東武

@pix編集を承認しましたが、コマンド置換ではなく、改行が置換されます。改行を削除したのは、後続のフィールド分割です。コマンド置換は、末尾の改行のみを削除します。
ムル

25

あなたの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  }'

2
最後にさらにオプションを置き換えるには: sort -gr | head -3
パブロA

1
現在、 curl -s http://mirrors.ubuntu.com/mirrors.txt1行のみを返します。http://archive.ubuntu.com/ubuntu/これは、複数の中から選択する目的を無効にします。: - /
ステフェイン・グーリッホン

はい、このメソッドはNGです。
ネタウォーター

にリストされているベースミラーURL がどこにあるかが、ミラーからのインデックスファイルの最初の〜100Kの速度比較を可能にするcurlため、この回答の一部が役立つことcurl -r 0-102400 -o /dev/null [server_url]/ls-lR.gzがわかりました。[server_url]mirrors.txt
ジェームズ

これは転送速度をテストします。これは間違いなくnetselectよりも改善されています。各サーバーから10kをダウンロードするだけで、高速接続での安定した転送速度の優れた表現ではないかもしれません。102400が大きく、ダウンロードしてテストすることを増やす
フィル・ミラー

17

これは、TCPレイテンシが最小のミラーを検出するPythonスクリプトです。

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

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

$ apt-select --country US -t 5 --choose

5
非常に簡単で簡単な方法で使用する準備ができているスクリプトを使用してdebianパッケージを作成したことをお知らせします:github.com/brodock/apt-select/releases/tag/0.1.0
Gabrielマゼット

私は他の方法を試したので、これは完璧なソリューションです。noobを使いやすくするために、この方法を詳しく説明した投稿を書きました。 blog.kmonsoor.com/...
kmonsoor

ので、これは素晴らしいですが、netselectUbuntuの新しいバージョンでは使用できません
テック

投稿でそれを使用する方法を示してください
ジョナサン

@ジョナサン完了。完全な使用法はREADME、最初のリンクにあります。
ジョンB

5

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

sudo npm install -g ffum
ffum

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


ffumは機能しません:接続エラー。
ジェームズフー

動作しません:出力が空です。
ファン・シモン

git cloneレポと実行node ffum
マイケル14

素晴らしい、私のために働く!nodejsの代わりにnodeを探していたバグがありました...また、テストされた各アーカイブ速度の冗長性を持っているとクールです。
tweak2 14

4

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

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

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

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

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


18.04では、このスクリプトは、端末から(メインとして)アプリケーションとして呼び出されたときを検出し、その結果を端末に出力するだけです。完了するのに十分な時間を与えてください。$ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py>>[top 5 omitted] and the winner is: ny-mirrors.evowise.com
PatKilg

悲しいことに、それは正しく動作しません。このスクリプトは、pingが最小の5台のサーバーを取得し、約1Mのファイル(distからmainのPackage.gz)をダウンロードして帯域幅でスコアリングします。スクリプトを変更して25台のサーバーに増やし、500Mファイルをダウンロードすると、まったく異なる結果が得られますが、今回は正しい結果です。
ジョセリン

2

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

のUbuntu 18.04私は実行して良い結果を得ました

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

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

詳細

私にとって、私の中で鏡として、それらを設定することにより、そのコマンドにより上位の結果出力のいくつかをテストするために有用であった/etc/apt/sources.listし、次にやっ

time sudo apt update

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

1
悲しいことに、それは正しく動作しません。このスクリプトは、pingが最小の5台のサーバーを取得し、約1Mのファイル(distからmainのPackage.gz)をダウンロードして帯域幅でスコアリングします。スクリプトを変更して25台のサーバーに増やし、500Mファイルをダウンロードすると、まったく異なる結果が得られますが、今回は正しい結果です。
ジョセリン

1

コマンドラインには、apt-smartというPythonツールを使用できます。

国内のランク付けされたミラーを一覧表示する(自動検出する)使用例:

$ apt-smart -l

-l、または--list-mirrors、あなたは(トラヴィスCI米国のサーバーからの出力例)を取得します。

---------------------------------------------------------------------------------------------------------
| Rank | Mirror URL                            | Available? | Updating? | Last updated    | Bandwidth   |
---------------------------------------------------------------------------------------------------------
|    1 | http://mirrors.gigenet.com/ubuntua... | Yes        | No        | Up to date      | 1.73 MB/s   |
|    2 | http://mirror.genesisadaptive.com/... | Yes        | No        | Up to date      | 1.68 MB/s   |
|    3 | http://ubuntu.mirrors.tds.net/pub/... | Yes        | No        | Up to date      | 1.4 MB/s    |
|    4 | http://repos.forethought.net/ubuntu   | Yes        | No        | Up to date      | 1.35 MB/s   |
|    5 | http://repo.miserver.it.umich.edu/... | Yes        | No        | Up to date      | 937.62 KB/s |
...
|   75 | http://mirror.cc.vt.edu/pub2/ubuntu   | Yes        | No        | 1 day behind    | 659.67 KB/s |
|   76 | http://mirror.atlantic.net/ubuntu     | Yes        | No        | 2 days behind   | 351.26 KB/s |
|   77 | http://mirror.lstn.net/ubuntu         | Yes        | No        | 4 days behind   | 806.81 KB/s |
|   78 | http://mirrors.usinternet.com/ubun... | Yes        | No        | 4 weeks behind  | 514.31 KB/s |
|   79 | http://mirrors.arpnetworks.com/Ubuntu | Yes        | No        | 19 weeks behind | 418.94 KB/s |
|   80 | http://mirrors.ocf.berkeley.edu/ub... | Yes        | Yes       | Up to date      | 446.07 KB/s |
---------------------------------------------------------------------------------------------------------
Full URLs which are too long to be shown in above table:
1: http://mirrors.gigenet.com/ubuntuarchive
2: http://mirror.genesisadaptive.com/ubuntu
3: http://ubuntu.mirrors.tds.net/pub/ubuntu
5: http://repo.miserver.it.umich.edu/ubuntu
...
78: http://mirrors.usinternet.com/ubuntu/archive
80: http://mirrors.ocf.berkeley.edu/ubuntu

もちろん、apt-smart必要に応じてsources.listを変更することもできます。

$ apt-smart -a

-aまたは--auto-change-mirror、利用できるミラーを発見し、接続速度や更新状況によってミラーをランク付けし、利用可能な最善のミラーを使うよう、/etc/apt/sources.listを更新します。

-cまたは--change-mirror MIRROR_URL与えられたMIRROR_URLを使うよう、/etc/apt/sources.listを更新します。

他のツールと比較して:

  • apt-smart 現在地を自動的に検出するため、海外旅行時に国を指定する必要はありません。
  • apt-smart各ミラーからの実際のHTTPダウンロードを実行して、より正確な結果(帯域幅とステータス)を取得しping、ランチパッドの不正確なデータを使用して依存するのではなく、HTTPプロキシをサポートします。
  • apt-smart が維持されていますが、他のほとんどのツールは問題を長期間修正しません。

apt-smart介して簡単にインストールできます。pip詳細なcopy'n'pasteインストールコマンドと使用法については、プロジェクトのReadmeを参照してください。


0

以下を使用してミラーを自動選択します(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

ユーティリティでこれを行うには、次のような単純な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

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

二つの異なるがあり、作業以下この質問への回答は:

  1. 使用apt-getのmirror:方法を

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

  2. netselectを使用したコマンドラインfoo netselectツール
    を使用して、地理的にではなく、ネットワークごとに最近更新された最速のサーバーを見つける方法を示します。でミラーを交換するために使用します。sedsources.list

sedミラーを交換するために使用sources.list

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.