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

124

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

    
задан Evan 04.05.2011 в 06:35
источник

12 ответов

19
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 в 07:07
источник
134

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

apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:

%pr_e%

on the top in your %co_de% file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.

Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace %co_de% with the appropriate name.

    
ответ дан badp 23.10.2010 в 10:31
источник
47

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

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

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

    
ответ дан John B 10.06.2014 в 23:58
источник
15

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

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

sudo npm install -g ffum
ffum

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

    
ответ дан tentaculo 14.05.2013 в 16:56
источник
2

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

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

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

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

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

    
ответ дан copeland3300 29.10.2016 в 21:35
источник
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 в 12:37
источник
0

Если вы хотите использовать эту утилиту, вы можете реализовать такую ​​утилиту, как простой сценарий 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
    
ответ дан gmatht 24.01.2017 в 04:52
источник
0
Другие ответы, включая принятый ответ, более недействительны (для Ubuntu 11.04 и новее), потому что они рекомендовали пакеты Debian, такие как netselect-apt и apt-spy , которые не работают с Ubuntu.

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

  1. Использовать метод mirror: apt-get

    This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.

  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
    
ответ дан k0pernikus 07.05.2018 в 10:10
источник
-1

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

Ссылка

    
ответ дан david 10.04.2016 в 07:58
источник
-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 в 08:35
источник

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