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

137

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

22
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 questões 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
146

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

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

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

on the top in your /etc/apt/sources.list 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 precise with the appropriate name.

    
por badp 23.10.2010 / 12:31
49

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, junto com 8 linhas do contexto anterior, que incluem os URLs ftp / http reais
    3. O segundo grep extrai esses URLs ftp / http
  • Veja 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
22

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
17

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.

Um exemplo de uso que permite escolher entre 5 espelhos dos EUA com a menor latência para sua máquina:

$ apt-select --country US -t 5 --choose
    
por John B 11.06.2014 / 01:58
5

Eu 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
4

Eu sei que isso não responde diretamente à pergunta do OP, mas existe 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
2

Comando que encontra espelhos rápidos

No Ubuntu 18.04 , obtive bons resultados executando

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

Isso imprime uma lista de espelhos organizados por "time" (não explicado) e, em seguida, usei um dos espelhos que ele classificou como o mais alto.

Mais detalhes

Para mim, foi útil testar alguns dos principais resultados gerados por esse comando definindo-os como meu espelho em /etc/apt/sources.list e, em seguida, fazendo

time sudo apt update

para ver quanto tempo demorou para baixar a lista de pacotes desse espelho. Testei as três principais sugestões e elas foram todas rápidas, mas uma delas foi duas vezes mais rápida que as outras duas no teste time sudo apt update .

Veja um exemplo de saída de python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py :

mirror: es-mirrors.evowise.com - time: 0.183778047562
mirror: it-mirrors.evowise.com - time: 0.18604683876
mirror: la-mirrors.evowise.com - time: 0.192630052567
mirror: ny-mirrors.evowise.com - time: 0.208723068237
mirror: mirrors.accretive-networks.net - time: 0.385910987854
mirror: mirror.team-cymru.org - time: 0.46785402298
mirror: mirrors.psu.ac.th - time: 1.64231991768
and the winner is: es-mirrors.evowise.com
    
por 19.01.2019 / 23:34
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 recentes) porque elas recomendavam pacotes do 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

    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. 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 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