Come si seleziona il mirror più veloce dalla riga di comando?

127

Voglio aggiornare il mio file sources.list con il server più veloce dalla riga di comando in una nuova installazione di Ubuntu Server. So che questo è banalmente facile con la GUI, ma non sembra essere un modo semplice per farlo dalla riga di comando?

    
posta Evan 04.05.2011 - 08:35

12 risposte

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

Non incluso nella nuova Ubuntu a causa di problemi di confidenza sembra: vedi: Segnalazione di bug

Ma ... di solito uso ping per scoprire la velocità di una connessione in qualche luogo. Quantità di luppolo e latenza.

    
risposta data Rinzwind 04.05.2011 - 09:07
137

Non devi più fare ricerche - come ajmitch ha explained , puoi usare deb mirror per fai scegliere automaticamente il mirror migliore per te.

% Bl0ck_qu0te%     
risposta data badp 23.10.2010 - 12:31
47

Ecco un modo che funziona sempre, utilizzando il buon vecchio netselect e qualche grep magico:

Il "most best server" hack del tossicodipendente del terminale!

  • Scarica e dpkg -i netselect per la tua architettura dal sito web Debian. (è circa 125 KB , nessuna dipendenza)
  • Trova i mirror di Ubuntu più veloci dalla tua posizione, aggiornati o al massimo sei ore con questo (lo spiegherò di seguito, mi spiace che non si ripartisca bene in 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 rende un po 'prolisso - vuoi vedere i punti di progresso ei messaggi che ti dicono che i diversi mirror che mappano allo stesso IP sono stati uniti:)
    2. -sN controlla quanti mirror vuoi alla fine (per esempio i primi 10 mirror)
    3. -tN indica per quanto tempo ogni mirror è sottoposto a test della velocità (il valore predefinito è 10, maggiore è il numero, più tempo è necessario ma più affidabili sono i risultati.)
  • Questa è la roba del backquote (non incollare, solo per spiegazione)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget estrae lo stato del mirror più recente dal link .
    2. Il primo grep estrae i mirror che sono aggiornati o in ritardo di sei ore, insieme a 8 righe del contesto precedente che include gli URL ftp / http effettivi
    3. Il secondo grep estrae questi URL ftp / http
  • Ecco un esempio di output dalla California, USA:

    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/
    
    • I "ranghi" sono una metrica arbitraria; più basso di solito è meglio.
    • Se ti stai chiedendo perché il mirror Svezia-UE di kernel.org e uno specchio NZ sono tra i primi tre di California , beh, lo sono anch'io ;-) La verità è che netselect non sceglie sempre l'URL più appropriato da visualizzare quando più mirror si associano a un singolo IP; il numero 3 è anche noto come nz.archive.ubuntu.com !
risposta data ish 24.05.2012 - 08:45
18

Oneliner che seleziona il mirror migliore (per velocità di download) basato su mirrors.ubuntu.com per il tuo 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  }'
    
risposta data KAndy 10.01.2016 - 20:40
17

Ecco uno script Python che ho scritto che trova i mirror con la latenza TCP più bassa.

Lo script fornisce inoltre dati relativi alla larghezza di banda e allo stato tratti dal launchpad e genererà automaticamente un nuovo file sources.list o utilizzando un mirror scelto da una lista.

Un esempio di utilizzo che ti consente di scegliere tra 5 mirror US con la latenza più bassa sulla tua macchina:

$ apt-select --country US -t 5 --choose
    
risposta data John B 11.06.2014 - 01:58
5

Ho sviluppato un semplice script nodejs basato su ping che testa i server elencati su mirrors.ubuntu.com/mirrors.txt e restituisce quello più veloce:

sudo npm install -g ffum
ffum

Per favore fatemi sapere se lo trovate utile o avete dei suggerimenti (=

    
risposta data tentaculo 14.05.2013 - 18:56
2

So che questo non risponde direttamente alla domanda dell'OP, ma c'è un pulsante nella versione desktop / GUI di Ubuntu che trova il miglior specchio per te. Sembrava funzionare piuttosto bene, quindi l'ho esaminato brevemente, ma non ho avuto il tempo di dare un seguito.

Il motivo per cui lo presento è perché penso che sarebbe abbastanza semplice e utilizzabile per trasformarlo in un'utilità da riga di comando.

Se qualcuno è interessato, il test sembra trovarsi in:

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

Di nuovo, questo è il massimo che ho ottenuto, ma ho pensato di lasciarlo qui nel caso qualcuno lo volesse. Probabilmente ci riprenderò quando avrò ancora un po 'di tempo.

    
risposta data copeland3300 29.10.2016 - 23:35
0

Io uso quanto segue per selezionare automaticamente i mirror (e disabilitare 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
    
risposta data iheggie 09.07.2016 - 14:37
0

Se si desidera un'utilità per farlo, è possibile implementare tale utilità come un semplice script bash come il seguente. Questo potrebbe essere utile se si desidera utilizzare l'utilità senza la necessità di 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
    
risposta data gmatht 24.01.2017 - 05:52
0

Le altre risposte, inclusa la risposta accettata, non sono più valide (per Ubuntu 11.04 e successivi) perché raccomandavano pacchetti Debian come netselect-apt e apt-spy che non funzionano con Ubuntu.

Ci sono due diverse risposte alla seguente domanda:

  1. Usa il metodo apt_ get per mirror: % Bl0ck_qu0te%
  2. Riga di comando foo con netselect
    Mostra come utilizzare lo strumento netselect per trovare i server più veloci recentemente aggiornati da te - in termini di rete, non geograficamente. Usa sed per sostituire i mirror in sources.list .

Utilizza sed per sostituire i mirror in sources.list

Poiché alcune fonti utilizzano le cartelle di aggiunta come parte del loro percorso, potrebbe essere meglio utilizzare la sintassi del separatore alternativo.

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

Il modo più semplice ed efficace per ottenere il mirror più veloce è utilizzare la fonte apt mirror:// , vedi

link

    
risposta data david 10.04.2016 - 09:58
-4

bel programma terminale qui:

# 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
    
risposta data debsid 04.01.2012 - 09:35

Leggi altre domande sui tag