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

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

1
задан 7 May 2018 в 13:11

11 ответов

Вам больше не нужно заниматься поиском - как объяснил 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 на соответствующее имя.
131
ответ дан 25 May 2018 в 21:31
  • 1
    Отличный совет. Просто имейте в виду, что после внесения изменений вам нужно запустить sudo apt-get update, прежде чем делать apt-get install для использования вашего ближайшего зеркала. – Simon East 29 June 2013 в 22:03
  • 2
  • 3
    Хороший отзыв, но бесполезный в моем случае. Он работает на геолокации, предоставляя мне локальный сервер, который медленнее, чем я. Важным фактором здесь является временное расстояние в сети, а не пространственное расстояние. – jarondl 31 July 2013 в 13:24
  • 4
    на самом деле, например, здесь, в Италии, таким образом, используется зеркало, которое медленно загружает ... – Pisu 15 July 2015 в 10:11
  • 5
    в настоящее время сломан: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184 – marathon 31 August 2017 в 21:34

Вот один из способов, который всегда будет работать, используя старые добрые netselect и некоторые grep магии:

Терминал-аддикт «найти лучший сервер» hack!

Загрузить и 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 зеркал) -tN - как долго каждое зеркало проверяется на скорости (по умолчанию 10, чем больше число, тем больше времени требуется, чем более надежные результаты). Это материал для backquotes (не paste, просто для объяснения) 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 извлекают зеркала, которые обновлены или отстают на шесть часов, а также 8 строк предыдущего контекста, который включает в себя фактические URL ftp / http. Второй 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/ «ряды» - это произвольная метрика; ниже обычно лучше. Если вам интересно, почему Зеркало kernel.org Sweden-EU и зеркало NZ находятся в тройке лучших из Калифорнии, ну, я тоже ;-) Правда в том, что netselect не всегда выбирает наиболее подходящий URL-адрес отображать, когда несколько зеркал отображают один IP; номер 3 также известен как nz.archive.ubuntu.com!
45
ответ дан 25 May 2018 в 21:31
  • 1
    netselect выбирает зеркала с низкой задержкой udp или icmp. Он не обязательно выбирает зеркала, которые могут обеспечить большую пропускную способность. – Tobu 14 October 2013 в 00:40
  • 2
    @pix Я одобрил ваше редактирование, но это не замена команды, которая приводит к замене новых строк. Это последующее разделение поля, которое удалило новые строки. Замена команд только удаляет завершающие символы новой строки. – muru 21 February 2017 в 13:23
  • 3
    @muru спасибо, я только что чему-то научился :) – pix 22 February 2017 в 07:17

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

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

14
ответ дан 25 May 2018 в 21:31
  • 1
    Это великолепно, спасибо! – Wouter Van Vliet 28 October 2014 в 14:32
  • 2
    Я хочу сообщить вам, что я сделал пакет debian с вашим скриптом, который готов к использованию очень простым и простым способом: github.com/brodock/apt-select/releases/tag/0.1. 0 – Gabriel Mazetto 3 November 2015 в 08:25
  • 3
    это идеальное решение, поскольку я пробовал другие методы. чтобы сделать noob дружественным, я написал сообщение с подробным описанием этого метода :. blog.kmonsoor.com/&hellip – kmonsoor 11 October 2016 в 22:14
  • 4
    Это замечательно, так как netselect недоступен в новых версиях Ubuntu – Tek 18 February 2018 в 11:23

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  }'
11
ответ дан 25 May 2018 в 21:31
  • 1
    Чтобы добавить больше опций в конец: sort -gr | head -3. – Pablo Bianchi 4 March 2017 в 05:55
  • 2
    В настоящее время curl -s http://mirrors.ubuntu.com/mirrors.txt возвращает только одну строку: http://archive.ubuntu.com/ubuntu/, которая поражает цель выбора среди нескольких. : - / – Stéphane Gourichon 26 June 2017 в 16:35
  • 3
    да, поэтому этот метод является NG. – netawater 18 November 2017 в 08:58
  • 4
    Я нашел полезную часть curl этого ответа, потому что curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz, где [server_url] - это базовый зеркальный URL, указанный в mirrors.txt, позволяет сравнивать скорость первого ~ 100K индексного файла с зеркала. – jamesc 12 March 2018 в 16:57

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

sudo npm install -g ffum
ffum

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

5
ответ дан 25 May 2018 в 21:31
  • 1
    ffum не работает: Ошибка подключения. – James Fu 10 July 2013 в 13:48
  • 2
    Это не работает: пустой выход. – Juan Simón 27 August 2013 в 06:06
  • 3
    git clone репо и запустить node ffum – Michael 7 August 2014 в 08:58
  • 4
    Удивительно, работает для меня! У меня была ошибка, когда он искал узел вместо nodejs ... также было бы здорово иметь некоторые подробные данные о каждой проверенной скорости архива. – tweak2 27 August 2014 в 21:57

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

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

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

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

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

1
ответ дан 25 May 2018 в 21:31

Самый простой и эффективный способ получить самое быстрое зеркало - использовать источник apt mirror://, см.

https://mvogt.wordpress.com/2011/03/21/the-apt -mirror-метод /

0
ответ дан 25 May 2018 в 21:31

Я использую следующее для автоматического выбора зеркал (и отключить 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
ответ дан 25 May 2018 в 21:31

Если вы хотите использовать эту утилиту, вы можете реализовать такую ​​утилиту, как простой скрипт 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
ответ дан 25 May 2018 в 21:31

Другие ответы, включая принятый ответ, более недействительны (для Ubuntu 11.04 и новее), потому что они рекомендовали пакеты Debian, такие как netselect-apt и apt-spy, которые не работают с Ubuntu.

[d1 ] Ниже приведены два разных рабочих ответа на этот вопрос:

Использовать метод apt-get mirror:. Этот метод запрашивает у сервера Ubuntu список зеркал рядом с вами на основе вашего IP-адреса и выбирает один из них , Самая легкая альтернатива, с незначительным недостатком, что иногда самое близкое зеркало может быть не самым быстрым. Командная строка foo с использованием netselect Показывает, как использовать инструмент netselect, чтобы найти самые быстрые недавно обновленные серверы от вас - по сети, а не по географическому признаку. Используйте sed для замены зеркал в sources.list.

Используйте sed для замены зеркал в sources.list

. Поскольку некоторые источники используют папки с добавлением в качестве части своего пути, лучше использовать синтаксис альтернативного разделителя. [!d14 ]

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
0
ответ дан 25 May 2018 в 21:31

приятная терминальная программа здесь:

# apt-get install netselect-apt

Available Options

stable|testing|unstable|experimental|woody|sarge|etch|sid Specify which distribution of Debian to use. By default stable is used.

-s, --sources
While generating OUTFILE include also deb-src lines to use with ‘‘apt-get source’’ to obtain Debian source packages.

-i, --infile INFILE
Use INFILE instead of mirrors_full for reading mirror list. The file must be in the same format as mirrors_full.

-o, --outfile OUTFILE
Use OUTFILE instead of sources.list.

-n, --nonfree
Include also non-free section while generating OUTFILE.

-f, --ftp
Use FTP mirrors instead of HTTP and generate OUTFILE accordingly.

Examples

If you want non-free repos use the following command

# netselect-apt -n
-4
ответ дан 25 May 2018 в 21:31
  • 1
    эта программа предназначена для Debian, а не Ubuntu. – Juan Simón 27 August 2013 в 06:07

Другие вопросы по тегам:

Похожие вопросы: