Como você seleciona o espelho mais rápido a partir da linha de comando?

125

Eu quero atualizar meu arquivo sources.list com o servidor mais rápido da linha de comando em uma nova instalação do Ubuntu Server. Eu sei que isso é trivialmente fácil com a GUI, mas não parece haver uma maneira simples de fazer isso a partir da linha de comando?

    
por Evan 04.05.2011 / 08:35

12 respostas

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

Não incluído no Ubuntu mais recente devido a problemas de secturidade: veja: Relatório de erros

Mas ... Eu normalmente uso ping para descobrir a velocidade de uma conexão para algum local. Quantidade de saltos e latência.

    
por Rinzwind 04.05.2011 / 09:07
135

Você não precisa fazer mais nenhuma pesquisa - como ajmitch tem explicou , você pode usar deb mirror para tem o melhor espelho escolhido para você automaticamente.

% bl0ck_qu0te%     
por badp 23.10.2010 / 12:31
47

Aqui está uma maneira que sempre funcionará, usando o bom e velho netselect e alguns grep magic:

O "encontrar o melhor servidor" do viciado em terminal hack!

  • Baixe e dpkg -i netselect para sua arquitetura do site do Debian. (é cerca de 125 KB , sem dependências)
  • Encontre os espelhos mais rápidos do Ubuntu a partir de sua localização, atualizados ou no máximo seis horas atrás com isso (explicarei abaixo, desculpe, não divida bem no 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 torna um pouco detalhado - você deseja ver pontos de progresso e mensagens informando que diferentes mapeamentos de espelhos para o mesmo IP foram mesclados:)
    2. -sN controla quantos espelhos você deseja no final (por exemplo, os 10 principais espelhos)
    3. -tN é o tempo de duração de cada teste de velocidade (o padrão é 10; quanto maior o número, mais tempo demora, mas mais confiáveis são os resultados.)
  • Este é o material de backquotes (não cole, apenas para explicação)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget obtém o status de espelho mais recente do link .
    2. O primeiro grep extrai espelhos que estão atualizados ou seis horas atrasados, juntamente com oito linhas do contexto anterior que incluem os URLs ftp / http reais
    3. O segundo grep extrai esses URLs ftp / http
  • Aqui está uma amostra da Califórnia, EUA:

    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/
    
    • As "classificações" são uma métrica arbitrária; menor é geralmente melhor.
    • Se você está se perguntando por que o espelho do kernel.org Suécia-UE e um espelho do NZ estão entre os três primeiros da Califórnia , bem, eu também estou ;-) A verdade é que netselect nem sempre escolhe a URL mais apropriada para exibir quando vários espelhos mapeiam para um único IP; o número 3 também é conhecido como nz.archive.ubuntu.com !
por ish 24.05.2012 / 08:45
16

Oneliner que seleciona melhor (por velocidade de download) espelho baseado em mirrors.ubuntu.com para o seu 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  }'
    
por KAndy 10.01.2016 / 20:40
15

Aqui está um script Python que eu encontrei espelhos com a menor latência TCP.

O script também fornece dados de largura de banda e status retirados da barra de lançamento e gerará um novo arquivo sources.list automaticamente ou usando um espelho escolhido de uma lista.

    
por John B 11.06.2014 / 01:58
5

Desenvolvi um script nodejs baseado em ping simples que testa os servidores listados em mirrors.ubuntu.com/mirrors.txt e retorna o mais rápido:

sudo npm install -g ffum
ffum

Por favor, deixe-me saber se você acha útil ou tem alguma sugestão (=

    
por tentaculo 14.05.2013 / 18:56
2

Eu sei que isso não responde diretamente à pergunta do OP, mas há um botão na versão desktop / GUI do Ubuntu que encontra o melhor espelho para você. Parecia funcionar muito bem, então eu olhei para ele brevemente, mas não tive tempo para acompanhar.

A razão pela qual o levantei é porque acho que seria bastante simples e utilizável para torná-lo um utilitário de linha de comando.

Se alguém estiver interessado, o teste parece estar localizado em:

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

Mais uma vez, isso é o máximo que eu consegui, mas achei que deixaria isso aqui, caso alguém quisesse. Eu provavelmente vou pegar de volta quando tiver um pouco mais de tempo.

    
por copeland3300 29.10.2016 / 23:35
0

Eu uso o seguinte para selecionar espelhos automaticamente (e desabilitar o 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
    
por iheggie 09.07.2016 / 14:37
0

Se você quiser que um utilitário faça isso, poderá implementar tal utilitário como um script simples como o seguinte. Isso pode ser útil se você quiser usar o utilitário sem precisar de 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
    
por gmatht 24.01.2017 / 05:52
0

As outras respostas, incluindo a resposta aceita, não são mais válidas (para o Ubuntu 11.04 e mais recente) porque elas recomendavam pacotes Debian como netselect-apt e apt-spy que não funcionam com o Ubuntu.

Existem duas respostas diferentes trabalhando para esta pergunta abaixo:

  1. Use o método mirror: do apt-get % bl0ck_qu0te%
  2. Linha de comando foo usando o netselect
    Mostra como usar a ferramenta netselect para localizar os servidores atualizados mais recentemente de você - em termos de rede, não geograficamente. Use sed para substituir os espelhos em sources.list .

Use sed para substituir os espelhos em sources.list

Como algumas fontes usam pastas de adição como parte de seu caminho, talvez seja melhor usar a sintaxe do separador alternativo.

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
    
por k0pernikus 07.05.2018 / 12:10
-1

A maneira mais fácil e eficiente de obter o espelho mais rápido é usar o apt mirror:// source, consulte

link

    
por david 10.04.2016 / 09:58
-4

programa terminal agradável aqui:

# 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
    
por debsid 04.01.2012 / 09:35