Wie wählt man den schnellsten Spiegel in der Befehlszeile aus?

126

Ich möchte meine sources.list -Datei mit dem schnellsten Server von der Befehlszeile aus in einer neuen Ubuntu-Server-Installation aktualisieren. Ich weiß, dass dies mit der GUI trivial einfach ist, aber es scheint keine einfache Möglichkeit zu geben, dies über die Befehlszeile zu tun?

    
Evan 04.05.2011, 08:35

12 Antworten

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

Nicht in neueres Ubuntu enthalten, aus Sicherheitsgründen scheint es: Siehe Fehlerbericht

Aber normalerweise benutze ich ping , um die Geschwindigkeit einer Verbindung zu einem bestimmten Ort herauszufinden. Anzahl der Hopfen und Latenz.

    
Rinzwind 04.05.2011, 09:07
135

Sie müssen nicht mehr suchen - ajmitch hat erklärt können Sie deb mirror für verwenden Lassen Sie automatisch den besten Spiegel auswählen.

  

apt-get unterstützt jetzt eine Spiegelmethode, die dies ermöglicht Wählen Sie automatisch einen guten Spiegel basierend auf Ihrem Standort aus. 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
     

oben in Ihrer /etc/apt/sources.list -Datei sollte ausreichen, um automatisch einen Spiegel für Sie auszuwählen, basierend auf Ihrem geographischen Standort.

     

Benutzer von Lucid (10.04), Maverick (10.10), Natty (11.04) und Oneiric (11.10) können precise durch den entsprechenden Namen ersetzen.

    
badp 23.10.2010 12:31
47

Dies ist eine Möglichkeit, die unter Verwendung des guten alten netselect und einiger grep magic immer funktioniert:

Der Hack "Find bester Server" des Terminalsüchtigen!

  • Laden Sie und dpkg -i netselect für Ihre Architektur herunter. von der Debian-Website. (ca. 125 KB) keine Abhängigkeiten)
  • Finden Sie die schnellsten Ubuntu-Spiegel von Ihrem Standort aus, entweder auf dem neuesten Stand oder höchstens sechs Stunden dahinter (Ich erkläre es unten, es tut mir leid, dass es sich in Markdown nicht gut teilt)

    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 macht es etwas wortreich - Sie möchten Fortschrittspunkte und Meldungen sehen, die Ihnen sagen, dass verschiedene Spiegel auf dieselbe IP-Adresse zugreifen, die zusammengeführt wurden:)
    2. -sN steuert, wie viele Spiegel Sie am Ende wünschen (z. B. Top-10-Spiegel)
    3. -tN gibt an, wie lange jeder Spiegel auf Geschwindigkeit getestet wird (Standardeinstellung ist 10; je höher die Zahl, desto länger dauert es, aber desto zuverlässiger sind die Ergebnisse.)
  • Dies ist das Backquotes-Zeug (nicht einfügen, nur zur Erläuterung)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget holt den neuesten Spiegelstatus von link .
    2. Das erste grep extrahiert Spiegel, die auf dem neuesten Stand sind oder sechs Stunden hinterher liegen, zusammen mit acht Zeilen des vorherigen Kontexts, zu dem die tatsächlichen ftp / http-URLs gehören.
    3. Das zweite grep extrahiert diese ftp / http-URLs
  • Hier ein Beispiel aus Kalifornien, 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/
    
    • Die "Ränge" sind eine willkürliche Metrik. niedriger ist in der Regel besser.
    • Wenn Sie sich fragen, warum der schwedische EU-Spiegel von kernel.org und der neuseeländische Spiegel aus Kalifornien zu den ersten drei gehören, tja, ich auch ;-) Die Wahrheit ist, dass netselect wählt nicht immer die am besten geeignete URL für die Anzeige aus, wenn mehrere Spiegel auf eine einzige IP-Adresse zugreifen. Nummer 3 ist auch bekannt als nz.archive.ubuntu.com !
ish 24.05.2012 08:45
17

Oneliner, der die beste Spiegelung (durch Download-Geschwindigkeit) basierend auf mirrors.ubuntu.com für Ihre IP-Adresse auswählt.

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 20:40
16

Hier ist ein Python-Skript . Ich habe geschrieben, dass Spiegel mit der niedrigsten TCP-Latenz gefunden werden.

Das Skript stellt außerdem Bandbreiten- und Statusdaten bereit, die aus der Launchpad entnommen werden, und generiert automatisch eine neue sources.list -Datei ein aus einer Liste ausgewählter Spiegel.

Ein Verwendungsbeispiel, bei dem Sie aus fünf US-amerikanischen Spiegeln mit der geringsten Latenzzeit für Ihren Computer wählen können:

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

Ich habe ein einfaches ping-basiertes nodejs-Skript entwickelt, das die auf mirrors.ubuntu.com/mirrors.txt aufgeführten Server testet und den schnellsten Server zurückgibt:

sudo npm install -g ffum
ffum

Bitte lassen Sie mich wissen, wenn Sie es nützlich finden oder Vorschläge haben (=

)     
tentaculo 14.05.2013 18:56
2

Ich weiß, das beantwortet die Frage des OP nicht direkt, aber es gibt eine Schaltfläche in der Desktop- / GUI-Version von Ubuntu, die den besten Spiegel für Sie findet. Es schien ziemlich gut zu funktionieren, also habe ich es mir kurz angesehen, hatte aber keine Zeit, es weiter zu verfolgen.

Der Grund, warum ich es anspreche, ist, weil ich denke, dass es ziemlich einfach und brauchbar wäre, daraus ein Befehlszeilenprogramm zu machen.

Wenn jemand interessiert ist, scheint sich der Test in:

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

Wiederum ist das ungefähr so weit wie ich gekommen bin, aber ich dachte mir, ich würde das hier lassen, falls jemand es wollte. Ich werde es wahrscheinlich wieder aufnehmen, wenn ich etwas mehr Zeit habe.

    
copeland3300 29.10.2016 23:35
0

Ich verwende die folgenden Optionen, um automatisch Spiegelungen auszuwählen (und deb-src zu deaktivieren)

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 14:37
0

Wenn Sie ein Dienstprogramm dafür benötigen, können Sie ein solches Dienstprogramm als einfaches Bash-Skript wie das folgende implementieren. Dies kann nützlich sein, wenn Sie das Dienstprogramm verwenden möchten, ohne pip / nodejs zu benötigen.

#!/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 05:52
0

Die anderen Antworten, einschließlich der akzeptierten Antwort, sind nicht mehr gültig (für Ubuntu 11.04 und neuer), da sie Debian-Pakete wie netselect-apt und apt-spy empfohlen haben, die nicht mit Ubuntu funktionieren.

Es gibt zwei verschiedene funktionierende Antworten auf diese Frage:

  1. Verwenden Sie die Methode mirror: von apt-get
      

    Diese Methode fragt den Ubuntu-Server nach einer Liste von Spiegeln in Ihrer Nähe, basierend auf Ihrer IP, und wählt eine davon aus. Die einfachste Alternative, mit dem kleinen Nachteil, dass der nächstgelegene Spiegel manchmal nicht der schnellste ist.

  2. Befehlszeilenfunktion mit Netselect
    Zeigt Ihnen, wie Sie das netselect -Tool verwenden, um die schnellsten kürzlich aktualisierten Server von Ihnen zu finden - netzwerkmäßig, nicht geografisch. Verwenden Sie sed , um die Spiegel in sources.list zu ersetzen.

Verwenden Sie sed , um die Spiegel in sources.list zu ersetzen.

Da einige Quellen Additionsordner als Teil ihres Pfads verwenden, ist es möglicherweise besser, die alternative Trennzeichen-Syntax zu verwenden.

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

Der einfachste und effizienteste Weg zum schnellsten Spiegeln ist die Verwendung der Quelle apt mirror:// , siehe

link

    
david 10.04.2016 09:58
-4

schönes Terminalprogramm hier:

# 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 09:35

Tags und Links