Я хочу обновить свой файл sources.list
самым быстрым сервером из командной строки при новой установке Ubuntu Server. Я знаю, что это легко сделать с графическим интерфейсом, но, кажется, нет простого способа сделать это из командной строки?
Pakket netselect-apt dapper (net): Choose the fastest Debian mirror with netselect [universe] 0.3.ds1-5: all hardy (net): Choose the fastest Debian mirror with netselect [universe] 0.3.ds1-11: all
Pakket apt-spy dapper (admin): writes a sources.list file based on bandwidth tests [universe] 3.1-14: amd64 i386 powerpc
Не включенный в более новую Ubuntu из-за проблем secturity это кажется: см.: Отчет об ошибках
Но.. Я обычно просто использую ping для обнаружения скорости соединения с некоторым местоположением. Сумма транзитных участков и задержки.
Вам больше не нужно искать - как ajmitch объяснил , вы можете использовать deb mirror
, чтобы автоматически выбрать лучшее зеркало для вас.
apt-get теперь поддерживает метод 'mirror', который автоматически выбирает хорошее зеркало в зависимости от вашего местоположения. Поместив:
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) могут заменить
BLOCKQUOTE>precise
соответствующим именем.
Вот один способ, который всегда будет работать, используя старый добрый netselect
и немного магии grep
:
dpkg -i
netselect
для вашей архитектуры с веб-сайта Debian. (это около 125 КБ, без зависимостей) Найдите самые быстрые зеркала 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 лучших зеркал) Это материал обратных цитат (не вставляйте, просто для объяснения)
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 [ 1117]. grep
извлекает зеркала, которые обновлены или отстают на шесть часов, вместе с 8 строками предыдущего контекста, который включает фактические URL-адреса ftp / http Вот пример выходных данных из Калифорнии, США:
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
не всегда выбирает наиболее подходящий URL для отображения, когда несколько зеркал отображаются на один IP; число 3 также известно как nz.archive.ubuntu.com
! Oneliner, который выбирает лучшее (по скорости загрузки) зеркало на основе mirrors.ubuntu.com для вашего ip.
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.
Сценарий также предоставляет данные о полосе пропускания и состоянии, взятые из панели запуска , и автоматически генерирует новый файл sources.list
или с использованием зеркала, выбранного из списка.
Пример использования, который позволяет вам выбрать из 5 зеркал США с наименьшей задержкой для вашей машины:
$ apt-select --country US -t 5 --choose
Я знаю, что это не дает прямого ответа на вопрос ОП, но в настольной / графической версии Ubuntu есть кнопка, которая находит лучшее зеркало для вас. Казалось, что это сработало очень хорошо, поэтому я кратко рассмотрел это, но у меня не было времени, чтобы продолжить.
Причина, по которой я поднял этот вопрос, заключается в том, что я думаю, что было бы довольно просто и удобно использовать его как утилиту командной строки.
Если кому-то интересно, похоже, что тест находится в:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
Опять же, это примерно столько, сколько я получил, но я решил оставить это здесь на тот случай, если кто-то захочет. Я, вероятно, вернусь к этому, когда у меня будет немного больше времени.
Самый простой и эффективный способ получить самое быстрое зеркало - использовать источник apt mirror://
, см.
https://mvogt.wordpress.com/2011/03/21/the -apt-зеркальный метод /
На Ubuntu 18.04 я получил хорошие результаты путем выполнения
python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
Это печатает список зеркал, организованных "временем" (не объясненный), и затем я использовал одно из зеркал, которые оно оценило самый высокий.
Для меня было полезно протестировать несколько главных результатов, произведенных той командой путем установки их как моего зеркала в /etc/apt/sources.list
и затем выполнение
time sudo apt update
видеть, сколько времени это взяло для загрузки списка пакета с того зеркала. Я протестировал лучшие три предложения, и они были все быстры, но один из них был дважды с такой скоростью, как другие два в time sudo apt update
тест.
Вот вывод в качестве примера от 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
Я использую следующее для автоматического выбора зеркал (и отключаю 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
Если Вы хотите, чтобы утилита сделала это, Вы могли бы реализовать такую утилиту как простой сценарий удара как следующее. Это могло бы быть полезно, если Вы хотите использовать утилиту, не нуждаясь 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
Я разработал простой сценарий nodejs на основе ping, который проверяет серверы, перечисленные на mirrors.ubuntu.com/mirrors.txt, и возвращает самый быстрый:
sudo npm install -g ffum
ffum
Пожалуйста, дайте мне знать, если вы его найдете полезно или есть какие-либо предложения (=
Другие ответы, включая принятый ответ, больше не действительны (для Ubuntu 11.04 и новее), потому что они рекомендовали пакеты Debian, такие как netselect-apt
и apt-spy
, которые не работают с Ubuntu.
Ниже приведены два разных рабочих ответа на этот вопрос:
mirror:
] Этот метод запрашивает у сервера Ubuntu список зеркал рядом с вами на основе вашего IP-адреса и выбирает одно из них. Самая простая альтернатива, с незначительным недостатком, когда иногда самое близкое зеркало может быть не самым быстрым.
blockquote>
sed
для замены зеркал в sources.list
. sed
для замены зеркал в sources.list
Поскольку некоторые источники используют папки добавления как часть своего пути, может быть лучше использовать синтаксис альтернативного разделителя.
sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
Для командной строки Вы можете использовать инструмент Пайтона, названный способно-умный
пример использования А, который позволяет Вам перечислить оцениваемые зеркала в своей стране (автоматически обнаруживают):
$ apt-smart -l
С -l
, или --list-mirrors
, Вы доберетесь (продукция в качестве примера от сервера Трэвиса СИ У.С.):
---------------------------------------------------------------------------------------------------------
| 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
, чтобы обновить/etc/apt/sources.list, чтобы использовать данный MIRROR_URL.
По сравнению с другими инструментами:
apt-smart
автоматически находит, где Вы так, Вы не должны указывать страну, когда Вы ездите за границу. apt-smart
делает реальную загрузку HTTP с каждого зеркала, чтобы получить более точные результаты (пропускная способность & статус) и поддержки доверенность HTTP, вместо того, чтобы использовать ping
и полагаться на неточные данные launchpad. apt-smart
сохраняется, тогда как большинство других проблем отпуска инструментов открепляется в течение долгого времени. Вы можете легко установить apt-smart
через pip
, поскольку подробные copy'n'paste устанавливают команды и использования, пожалуйста, см. Readme Проекта.