¿Cómo selecciona el espejo más rápido desde la línea de comandos?

127

Quiero actualizar mi archivo sources.list con el servidor más rápido desde la línea de comandos en una nueva instalación de Ubuntu Server. Sé que esto es trivialmente fácil con la GUI, pero parece que no hay una manera simple de hacerlo desde la línea de comandos.     

pregunta Evan 04.05.2011 - 08:35

12 respuestas

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

No se incluye en Ubuntu más reciente debido a problemas de sector que parece: consulte: Informe de error / a>

Pero ... normalmente solo uso ping para averiguar la velocidad de una conexión a algún lugar. Cantidad de saltos y latencia.

    
respondido por el Rinzwind 04.05.2011 - 09:07
136

Ya no tiene que hacer ninguna búsqueda, ya que ajmitch tiene explicined , puede usar deb mirror para ten el mejor espejo seleccionado para ti automáticamente.

  

apt-get ahora admite un método 'espejo' que lo hará Seleccione automáticamente un buen espejo en función de su ubicación. Poniendo:

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
     

en la parte superior de tu archivo /etc/apt/sources.list debería ser todo lo que se necesita para que elija un espejo automáticamente en función de tu ubicación geográfica.

     Los usuarios

Lucid (10.04), Maverick (10.10), Natty (11.04) y Oneiric (11.10) pueden reemplazar precise con el nombre apropiado.

    
respondido por el badp 23.10.2010 - 12:31
47

Esta es una forma en la que siempre funcionará, usando buenos netselect y algo de grep magic:

¡El hack del "encontrar el mejor servidor" del adicto a la terminal!

  • Descargue y dpkg -i netselect para su arquitectura desde el sitio web de Debian. (aproximadamente 125 KB) , sin dependencias)
  • Encuentre los duplicados más rápidos de Ubuntu desde su ubicación, ya sea actualizado o como máximo seis horas atrás con esto (lo explicaré a continuación, lo siento, no se divide bien en 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 lo hace un poco detallado: desea ver los puntos de progreso y los mensajes que le informan que se combinaron diferentes réplicas de mapeo a la misma IP :)
    2. -sN controla la cantidad de duplicados que desea al final (por ejemplo, los 10 principales duplicados)
    3. -tN es el tiempo que cada réplica se prueba a velocidad (el valor predeterminado es 10; cuanto mayor sea el número, más tiempo llevará pero más confiables serán los resultados).
  • Esto es lo que está detrás de las citas (no pegar, solo como explicación)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget extrae el último estado de réplica de enlace .
    2. El primer grep extrae espejos actualizados o con seis horas de retraso, junto con 8 líneas del contexto anterior que incluye las URL reales ftp / http
    3. El segundo grep extrae estas URL ftp / http
  • Aquí hay una salida de muestra de California, EE. UU .:

    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/
    
    • Los "rangos" son una métrica arbitraria; menor es generalmente mejor.
    • Si se está preguntando por qué el espejo kernel.org Suecia-UE y un espejo NZ están entre los tres primeros de California , bueno, yo también ;-) La verdad es que netselect no siempre elige la URL más adecuada para mostrar cuando varios duplicados se asignan a una única IP; el número 3 también se conoce como nz.archive.ubuntu.com !
respondido por el ish 24.05.2012 - 08:45
17

Aquí hay un secuencia de comandos de Python que escribí espejos con la latencia de TCP más baja.

El script también proporciona datos de ancho de banda y estado tomados de launchpad , y generará un nuevo archivo sources.list automáticamente o usando un espejo elegido de una lista.

Un ejemplo de uso que le permite elegir entre 5 duplicados de EE. UU. con la latencia más baja para su máquina:

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

Oneliner que selecciona el mejor espejo (por velocidad de descarga) basado en mirrors.ubuntu.com para su ip 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  }'
    
respondido por el KAndy 10.01.2016 - 20:40
5

Desarrollé un script de nodejs basado en ping simple que prueba los servidores listados en mirrors.ubuntu.com/mirrors.txt y devuelve el más rápido:

sudo npm install -g ffum
ffum

Por favor, avíseme si le resulta útil o tiene alguna sugerencia (=

    
respondido por el tentaculo 14.05.2013 - 18:56
2

Sé que esto no responde directamente a la pregunta del OP, pero hay un botón en la versión de escritorio / GUI de Ubuntu que encuentra el mejor espejo para ti. Parecía funcionar bastante bien, así que lo examiné brevemente, pero no tuve tiempo de hacer un seguimiento.

La razón por la que lo menciono es porque creo que sería bastante sencillo y utilizable para convertirlo en una utilidad de línea de comandos.

Si alguien está interesado, la prueba parece estar ubicada en:

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

Una vez más, eso es todo lo que tengo, pero pensé que dejaría esto aquí en caso de que alguien lo quisiera. Probablemente lo retomaré cuando tenga un poco más de tiempo.

    
respondido por el copeland3300 29.10.2016 - 23:35
0

Uso lo siguiente para seleccionar automáticamente los espejos (y deshabilitar 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
    
respondido por el iheggie 09.07.2016 - 14:37
0

Si desea que una utilidad haga esto, puede implementar dicha utilidad como un simple script de bash como el siguiente. Esto puede ser útil si desea utilizar la utilidad sin necesidad 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
    
respondido por el gmatht 24.01.2017 - 05:52
0

Las otras respuestas, incluida la respuesta aceptada, ya no son válidas (para Ubuntu 11.04 y posteriores) porque recomendaron paquetes de Debian como netselect-apt y apt-spy que no funcionan con Ubuntu.

Hay dos respuestas en funcionamiento diferentes a esta pregunta a continuación:

  1. Utilice el método mirror: de apt-get
      

    Este método le pide al servidor de Ubuntu una lista de réplicas cerca de usted según su IP y selecciona una de ellas. La alternativa más fácil, con el inconveniente menor de que a veces el espejo más cercano puede no ser el más rápido.

  2. Foo de línea de comandos usando netselect
    Le muestra cómo usar la herramienta netselect para encontrar sus servidores actualizados más rápidamente, desde el punto de vista de la red, no geográficamente. Use sed para reemplazar los espejos en sources.list .

Use sed para reemplazar los espejos en sources.list

Dado que algunas fuentes usan carpetas de adición como parte de su ruta, podría ser mejor usar la sintaxis del separador alternativo.

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

La forma más fácil y eficiente de obtener el espejo más rápido es usar la fuente apt mirror:// , vea

enlace

    
respondido por el david 10.04.2016 - 09:58
-4

buen programa de terminal aquí:

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

Lea otras preguntas en las etiquetas