Ubuntu Serverの新規インストールで、sources.list
ファイルをコマンドラインから最速のサーバーで更新したい。私はこれがGUIで簡単にできることを知っていますが、コマンドラインからそれを行う簡単な方法はないようです?
パッケージ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を使用して、ある場所への接続速度を調べます。ホップの量と遅延。
もう検索する必要はありません- 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
を適切な名前に置き換えることができます。
古き良きnetselect
といくつかのgrep
マジックを使用して、常に機能する1つの方法を次に示します。
dpkg -i
netselect
Debianウェブサイトから (約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
:
-v
は少し冗長になります。同じIPにマッピングされた別のミラーがマージされたことを示す進行状況のドットとメッセージを表示する必要があります。-sN
は、最後に必要なミラーの数を制御します(例:トップ10ミラー)-tN
は、各ミラーの速度テストの期間です(デフォルトは10です。数値が大きいほど、時間がかかりますが、結果の信頼性は高くなります)。これはバッククォートです(説明のためだけに貼り付けないでください)
wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "status(UP | SIX)" | grep -o -P "(f | ht)tp:// [^ \"] * "
wget
は、最新のミラーステータスを https://launchpad.net/ubuntu/+archivemirrors から取得します。grep
は、実際のftp/http URLを含む8行の前のコンテキストとともに、最新または6時間遅れのミラーを抽出します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/
netselect
は、複数のミラーが単一のIPにマップされるときに表示するのに常に最適なURLを選択するとは限らないということです。番号3はnz.archive.ubuntu.com
とも呼ばれます!あなたの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 }'
Pythonスクリプト TCPレイテンシーが最も低いミラーを見つけると書いた。
また、スクリプトは launchpad から取得した帯域幅とステータスデータを提供し、新しいsources.list
ファイルを自動的に生成するか、リストから選択したミラーを使用します。
マシンへの待ち時間が最も短い5つのUSミラーから選択できる使用例:
$ apt-select --country US -t 5 --choose
Mirrors.ubuntu.com/mirrors.txtにリストされているサーバーをテストし、最速のものを返す簡単なpingベースのnodejsスクリプトを開発しました。
Sudo npm install -g ffum
ffum
役に立つと思うか、何か提案があれば教えてください(=
これがOPの質問に直接答えないことは知っていますが、Ubuntuのデスクトップ/ GUIバージョンには、最適なミラーを見つけるボタンがあります。それはかなりうまくいくように思えたので、簡単に調べましたが、フォローアップする時間はありませんでした。
私がそれを立ち上げた理由は、コマンドラインユーティリティにするのにかなり簡単で使いやすいと思うからです。
誰かが興味を持っている場合、テストは次の場所にあるようです。
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
繰り返しますが、それは私が得た限りではありますが、だれかがそれを望んだ場合に備えて、ここに置いておきたいと思いました。もう少し時間があれば、おそらくまた取り上げるでしょう。
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
ユーティリティでこれを行うには、次のような単純な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
受け入れられた回答を含むその他の回答は、Ubuntuでは動作しないnetselect-apt
やapt-spy
などのDebianパッケージを推奨しているため、(Ubuntu 11.04以降では)無効になりました。
以下に、この質問に対する2つの異なるworking回答があります。
mirror:
メソッドを使用この方法では、IPに基づいてUbuntuサーバーに近くのミラーのリストを要求し、そのうちの1つを選択します。最も簡単な代替策として、最も近いミラーが最速でない場合があるという小さな欠点があります。
sed
を使用して、sources.list
のミラーを置き換えます。sed
を使用して、sources.list
のミラーを置き換えます一部のソースはパスの一部として追加フォルダーを使用するため、代替セパレーター構文を使用した方がよい場合があります。
Sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
以下を使用してミラーを自動選択します(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