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

115

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

  

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

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

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

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

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
    
задан Evan 04.05.2011 в 08:35
источник

11 ответов

17
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 из-за проблем с секьюрией, кажется: см. Отчет об ошибке

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

ответ дан Rinzwind 04.05.2011 в 09:07
источник
126

Вам больше не нужно искать - ajmitch имеет explained , вы можете использовать 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 соответствующим именем.

    
ответ дан badp 23.10.2010 в 12:31
источник
45

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

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

  • Загрузите и 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 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget вытягивает последний статус зеркала с Ссылка .
    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/
    
    • «Ранги» - это произвольная метрика; ниже обычно лучше.
    • Если вам интересно, почему зеркало kernel.org Sweden-EU и зеркало NZ находятся в тройке лидеров из California , ну, я тоже ;-) Правда в том, что netselect не всегда выбирает наиболее подходящий URL для отображения, когда несколько зеркал сопоставляются с одним IP; номер 3 также известен как nz.archive.ubuntu.com !
ответ дан izx 24.05.2012 в 08:45
источник
14

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

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

    
ответ дан John B 11.06.2014 в 01:58
источник
10

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   }'
    
ответ дан KAndy 10.01.2016 в 20:40
источник
5

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

sudo npm install -g ffum
ffum

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

    
ответ дан tentaculo 14.05.2013 в 18:56
источник
1

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

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

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

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

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

    
ответ дан copeland3300 29.10.2016 в 23:35
источник
0

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

Ссылка

    
ответ дан david 10.04.2016 в 09:58
источник
0

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

Если вы хотите использовать эту утилиту, вы можете реализовать такую ​​утилиту, как простой сценарий bash, например, следующий. Это может быть полезно, если вы хотите использовать утилиту, не требуя pip / nodejs.

#!/bin/bash
if [ -z "" ]
then
    echo Usage:  sudo %pre% 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,," < /etc/apt/sources.list.tmp > /etc/apt/sources.list
    
ответ дан gmatht 24.01.2017 в 05:52
источник
-4

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

# 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
    
ответ дан debsid 04.01.2012 в 09:35
источник

Ознакомьтесь с другими вопросами по меткам