Вопрос Как вы выбираете самое быстрое зеркало из командной строки?


Я хочу обновить свои sources.list файл с самым быстрым сервером из командной строки в новой установке Ubuntu Server. Я знаю, что это просто тривиально с графическим интерфейсом, но, похоже, нет простого способа сделать это из командной строки?


124
2018-05-04 06:35


происхождения


В регулярных выражениях. символ означает любой символ. Если вы хотите, чтобы он соответствовал., Вам нужно сбежать с помощью \, поэтому us.archive [..] должен быть нами \ .archive [..] - Egil
Связанный: askubuntu.com/questions/37753/... - Jorge Castro
В моем случае мне пришлось заменить # знаки с косой чертой (/). В противном случае я получил sed: -e expression #1, char 53: unterminated s 'command`. - Ethan Leroy
@EthanLeroy же здесь с Ubuntu 12.04.3 - logoff
Должен быть косой чертой. - Matt H


ответы:


Pakket netselect-apt

    dapper (net): выберите самое быстрое зеркало Debian с netselect
    [Вселенная]
    0.3.ds1-5: все
    hardy (net): выберите самое быстрое зеркало Debian с netselect
    [Вселенная]
    0.3.ds1-11: все
Pakket apt-spy

    dapper (admin): записывает файл sources.list на основе тестов пропускной способности
    [Вселенная]
    3.1-14: amd64 i386 powerpc

Не входит в новый Ubuntu из-за проблем с секьюритами, похоже: см .: Отчет об ошибке

Но .. Обычно я использую пинг чтобы узнать скорость соединения с каким-либо местом. Количество прыжков и латентность.


19
2018-05-04 07:07



netselect-apt, похоже, недоступен в Ubuntu 12.04 - offby1
правильный: см. здесь bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377 - Rinzwind
Это не самый приоритетный или лучший ответ, проверьте следующий - ntg
Какой ответ «следующий», возможно, изменился. - gmatht
apt-spy ушел на debian 9, но netselect-apt в порядке - netawater


Вам больше не нужно заниматься поиском - как ajmitch имеет объяснил, вы можете использовать deb mirror чтобы лучшее зеркало выбрано для вас автоматически.

APT-получить теперь поддерживает метод '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) могут заменить precise с соответствующим именем.


134
2017-10-23 10:31



Отличный совет. Просто отметьте, что после внесения изменений вам нужно запустить sudo apt-get update перед тем, как сделать apt-get install для того, чтобы использовать ваше ближайшее зеркало. - Simon East
Связанный: askubuntu.com/q/319433/11244 - Till
Хороший отзыв, но бесполезный в моем случае. Он работает на геолокации, предоставляя мне локальный сервер, который медленнее, чем я. Важным фактором здесь является временное расстояние в сети, а не пространственное расстояние. - jarondl
на самом деле, например, здесь, в Италии, таким образом, используется зеркало, которое медленно загружает ... - Pisu
в настоящее время сломан: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184 - marathon


Вот один из способов, который всегда будет работать, используя старый добрый 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:

    1. -v делает его немного подробным - вы хотите увидеть точки прогресса и сообщения, сообщающие вам, что разные зеркала, сопоставленные с одним и тем же IP-адресом, были объединены :)
    2. -sN контролирует, сколько зеркал вам нужно в конце (например, 10 лучших зеркал)
    3. -tN как долго каждое зеркало проверяется на скорости (по умолчанию 10, чем больше число, тем дольше оно требуется, но более надежные результаты).
  • Это материал backquotes (не вставляйте, просто для объяснения)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "(UP | SIX)"
    | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wget вытаскивает последнее зеркальное состояние из https://launchpad.net/ubuntu/+archivemirrors,
    2. Первый grep извлекает зеркала, которые обновлены или отстают на шесть часов, а также 8 строк предыдущего контекста, который включает фактические URL ftp / http
    3. Второй grep извлекает эти 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/
    
    • «Ранги» - это произвольная метрика; ниже обычно лучше.
    • Если вы задаетесь вопросом, почему зеркало из Швеции и ЕС, а также зеркало NZ находятся в тройке лучших Калифорния, ну, так я ;-) Правда в том, что netselect не всегда выбирает наиболее подходящий URL для отображения, когда несколько зеркал сопоставляются с одним IP; номер 3 также известен как nz.archive.ubuntu.com!

47
2018-05-24 06:45



netselect выбирает зеркала с низкой задержкой udp или icmp. Он не обязательно выбирает зеркала, которые могут обеспечить большую пропускную способность. - Tobu
@pix Я одобрил ваше редактирование, но это не замена команды, которая приводит к замене новых строк. Это последующее разделение поля, которое удалило новые строки. Замена команд только удаляет завершающие символы новой строки. - muru
@muru спасибо, я только что чему-то научился :) - pix


Вот Скрипт Python Я написал, что находит зеркала с самой низкой задержкой TCP.

Сценарий также предоставляет данные о пропускной способности и состоянии, взятые из Launchpad, и будет генерировать новый sources.list файл автоматически или используя зеркало, выбранное из списка.


15
2018-06-10 23:58



Это великолепно, спасибо! - Wouter Van Vliet
Я хочу сообщить вам, что я создал пакет debian со своим скриптом, который готов к использованию очень простым и простым способом: github.com/brodock/apt-select/releases/tag/0.1.0 - Gabriel Mazetto
это идеальное решение, поскольку я пробовал другие методы. чтобы сделать noob дружественным, я написал сообщение с подробным описанием этого метода :. blog.kmonsoor.com/... - kmonsoor
Это здорово, поскольку netselect недоступен в новых версиях Ubuntu - Tek


Oneliner, который выбирает лучшее (по скорости загрузки) зеркало на основе mirror.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  }'

14
2018-01-10 19:40



Чтобы добавить больше опций в конец: sort -gr | head -3, - Pablo Bianchi
В данный момент, curl -s http://mirrors.ubuntu.com/mirrors.txt возвращает только одну строку: http://archive.ubuntu.com/ubuntu/ который побеждает цель выбора среди нескольких. : - / - Stéphane Gourichon
да, поэтому этот метод является NG. - netawater
Я нашел curl часть этого ответа полезна, потому что curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz где [server_url] является базовым зеркальным URL, указанным в mirrors.txt, позволяет сравнивать скорость первого ~ 100K индексного файла с зеркала. - jamesc
Это проверяет скорость передачи, что, безусловно, является улучшением по сравнению с netselect. Это только загрузка 10k с каждого сервера, что, возможно, не является отличным представлением о постоянной скорости передачи при более быстрых соединениях. Увеличьте этот показатель 102400 для более высокой загрузки - Phil Miller


Я разработал простой скрипт nodejs на основе ping, который проверяет серверы, перечисленные на mirror.ubuntu.com/mirrors.txt, и возвращает самый быстрый из них:

sudo npm install -g ffum
ffum

Пожалуйста, дайте мне знать, если вы сочтете это полезным или у вас есть предложения (=


5
2018-05-14 16:56



ffum не работает: Ошибка подключения. - James Fu
Это не работает: пустой выход. - Juan Simón
git clone репо и запуск node ffum - Michael
Удивительно, работает для меня! У меня была ошибка, когда он искал узел вместо nodejs ... также было бы здорово иметь некоторые подробные данные о каждой проверенной скорости архива. - tweak2


Я знаю, что это напрямую не отвечает на вопрос OP, но есть кнопка в версии Ubuntu на рабочем столе / графическом интерфейсе, которая находит лучшее зеркало для вас. Казалось, это работает очень хорошо, поэтому я вкратце рассмотрел его, но не успел следить.

Причина, по которой я это вызвала, состоит в том, что я думаю, что было бы довольно прямолинейно и полезно использовать его в утилите командной строки.

Если кто-то заинтересован, тест, похоже, находится в:

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

Опять же, это до тех пор, пока я получил, но я решил, что оставлю это здесь, если кто-то захочет этого. Вероятно, я заберу его, когда у меня еще немного времени.


2
2017-10-29 21:35



18.04 этот скрипт обнаруживает, когда он вызывается как приложение (как главный) от терминала .... и просто распечатывает свои результаты на терминале. Обязательно дайте ему достаточно времени для завершения. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com - PatKilg


Я использую следующее для автоматического выбора зеркал (и отключить 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
2017-07-09 12:37





Если вы хотите использовать эту утилиту, вы можете реализовать такую ​​утилиту, как простой скрипт 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
2018-01-24 04:52