Как просматривать и выбирать зеркала ubuntu с терминала? [dубликат]

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

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

104 ответа

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

Ниже приведены два разных рабочих ответов:

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

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

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

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
0
ответ дан 8 August 2018 в 22:54

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  }'
13
ответ дан 8 August 2018 в 22:54

Вот один из способов, который всегда будет работать, используя старые добрые 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 лучших зеркал) -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/+arch ivemirrors . Первые 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 находятся в тройке лучших из California , ну, я тоже ;-) Правда в том, что netselect t всегда выбирайте наиболее подходящий URL для отображения, когда несколько зеркал сопоставляются с одним IP; номер 3 также известен как nz.archive.ubuntu.com!
47
ответ дан 8 August 2018 в 22:54

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

# 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
ответ дан 8 August 2018 в 22:54

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

https://mvogt.wordpress.com/2011/03/21/ -кв-зеркально метод /

-1
ответ дан 14 August 2018 в 12:52

Вам больше не нужно заниматься поиском - поскольку 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) пользователи могут заменить precise на соответствующее имя.

133
ответ дан 14 August 2018 в 12:52
  • 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

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

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

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

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

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

2
ответ дан 14 August 2018 в 12:52
  • 1
    В 18.04 этот скрипт обнаруживает, когда он вызывается как приложение (как main ) из терминала .... и просто печатает его результаты на терминале. Обязательно дайте ему достаточно времени для завершения. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py & gt; [top 5 omitted] and the winner is: ny-mirrors.evowise.com – PatKilg 9 June 2018 в 21:07

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

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

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

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

14
ответ дан 14 August 2018 в 12:52

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

sudo npm install -g ffum
ffum

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

5
ответ дан 14 August 2018 в 12:52
  • 1
    – 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

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

Ниже приведены два разных рабочих ответов:

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

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

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

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
0
ответ дан 14 August 2018 в 12:52

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
ответ дан 14 August 2018 в 12:52
  • 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
  • 5
    Это проверяет скорость передачи, что, безусловно, является улучшением по сравнению с netselect. Это только загрузка 10k с каждого сервера, что, возможно, не является отличным представлением о постоянной скорости передачи при более быстрых соединениях. Увеличьте этот показатель 102400 для более высокой загрузки – Phil Miller 9 June 2018 в 00:41

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

# 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
ответ дан 14 August 2018 в 12:52

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

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