web-dev-qa-db-fra.com

Comment sélectionnez-vous le miroir le plus rapide de la ligne de commande?

Je souhaite mettre à jour mon fichier sources.list avec le serveur le plus rapide à partir de la ligne de commande dans une nouvelle installation d'Ubuntu Server. Je sais que cela est trivialement facile avec l'interface graphique, mais il ne semble pas être un moyen simple de le faire à partir de la ligne de commande?

137
Evan
Pakket netselect-apt 
 
 Dapper (net): Choisissez le miroir Debian le plus rapide avec netselect 
 [Univers] 
 0.3.ds1-5: tous 
 hardy (net): Choisissez le miroir Debian le plus rapide avec netselect 
 [univers] 
 0.3.ds1-11: tous 
 Pakket apt-spy 
 
 Dapper (admin): écrit un fichier sources.list basé sur des tests de bande passante 
 [Univers] 
 3.1-14 : AMD64 i386 powerpc 

Non inclus dans Ubuntu plus récent en raison de problèmes de sécurité, il semble: voir: Rapport de bug

Mais .. normalement, je me sers de ping pour connaître la vitesse d’une connexion à un emplacement donné. Quantité de sauts et de latence.

22
Rinzwind

Vous n'avez plus besoin de chercher, car ajmitch a expliqué , vous pouvez utiliser deb mirror pour que le meilleur miroir soit automatiquement sélectionné.

apt-get supporte maintenant une méthode 'miroir' qui sélectionne automatiquement un bon miroir en fonction de votre emplacement. En mettant:

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 haut de votre fichier /etc/apt/sources.list devrait suffire à lui faire choisir automatiquement un miroir en fonction de votre situation géographique.

Les utilisateurs de Lucid (10.04), Maverick (10.10), Natty (11.04) et Oneiric (11.10) peuvent remplacer precise par le nom approprié.

146
badp

Voici un moyen qui fonctionnera toujours, en utilisant le bon vieux netselectet un peu de grepname__:

Le terminal-addict "trouve le meilleur serveur" bidouille!

  • Téléchargez et dpkg -inetselectpour votre architecture depuis le site Web de Debian. (environ 125 Ko, pas de dépendances)
  • Trouvez les miroirs Ubuntu les plus rapides de chez vous, soit à jour, soit au plus six heures de retard avec cela (je l'expliquerai ci-dessous, désolé, cela ne se divise pas très bien dans 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: // [^ \"] * "` 
    
  • netselectname__:

    1. -v en fait un peu prolixe - vous voulez voir les points de progression et les messages vous indiquant que différents miroirs mappés sur la même adresse IP ont été fusionnés :)
    2. -sN contrôle combien de miroirs vous voulez à la fin (par exemple 10 premiers miroirs)
    3. -tN indique combien de temps chaque miroir est soumis à un test de vitesse (la valeur par défaut est 10; plus le nombre est élevé, plus cela prend de temps, mais plus les résultats sont fiables.)
  • Ceci est la substance des citations arrières (ne pas coller, juste pour une explication)

     wget -q -O- https://launchpad.net/ubuntu/+archivemirrors 
     | grep -P -B8 "statut (UP | SIX)" 
     | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wgetextrait le dernier statut de miroir de https://launchpad.net/ubuntu/+archivemirrors .
    2. Le premier grepextrait des miroirs mis à jour ou avec six heures de retard, ainsi que 8 lignes du contexte précédent, qui inclut les URL ftp/http réelles.
    3. La seconde grepextrait ces URL ftp/http
  • Voici un exemple de sortie de Californie, USA:

    . ftp.citylink.co.nz/ubuntu/
    279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
    294 http://mirror.umd.edu/ubuntu/ . csclub.uwaterloo.ca/ubuntu/
    399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
    455 http://ubuntu.mirror.root.lu/ubuntu/ 
    
    • Les "rangs" sont une métrique arbitraire; bas est généralement mieux.
    • Si vous vous demandez pourquoi le miroir Suède-UE de kernel.org et un miroir NZ figurent dans le top trois de en Californie , eh bien moi aussi; -) La vérité est que netselectne choisit pas toujours l'URL la plus appropriée à afficher lorsque plusieurs miroirs sont mappés sur une même adresse IP; Le numéro 3 est également appelé nz.archive.ubuntu.com!
49
ish

Oneliner qui sélectionne le meilleur miroir (en vitesse de téléchargement) sur la base de mirrors.ubuntu.com pour votre 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  }'
22
KAndy

Voici un script Python J'ai écrit qui trouve des miroirs avec la plus faible latence TCP.

Le script fournit également des données de bande passante et d'état provenant de tableau de bord , et génère un nouveau fichier sources.list automatiquement ou à l'aide d'un miroir choisi dans une liste.

Un exemple d'utilisation qui vous permet de choisir parmi 5 miroirs US avec la latence la plus faible sur votre machine:

$ apt-select --country US -t 5 --choose
17
John B

J'ai développé un script nodejs basé sur le ping qui teste les serveurs répertoriés sur mirrors.ubuntu.com/mirrors.txt et renvoie le plus rapide:

Sudo npm install -g ffum
ffum

S'il vous plaît laissez-moi savoir si vous le trouvez utile ou avez des suggestions (=

5
tentaculo

Je sais que cela ne répond pas directement à la question du PO, mais il y a un bouton dans la version de bureau/interface graphique d'Ubuntu qui trouve le meilleur miroir pour vous. Cela a semblé fonctionner assez bien, alors j'ai examiné la situation brièvement, mais je n'ai pas eu le temps de faire un suivi.

La raison pour laquelle j'en parle, c'est parce que je pense qu'il serait assez simple et utilisable de le transformer en un utilitaire de ligne de commande.

Si quelqu'un est intéressé, le test semble se situer dans:

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

Encore une fois, c’est à peu près tout ce que j’ai eu, mais j’ai pensé que je laisserais ça ici au cas où quelqu'un le voudrait. Je reviendrai probablement là-dessus quand il me restera un peu de temps.

4
copeland3300

Commande qui trouve des miroirs rapides

On buntu 18.04 J'ai obtenu de bons résultats en exécutant

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

Cela imprime une liste de miroirs organisée par "heure" (non expliquée), puis j’ai utilisé l’un des miroirs qu’il a classés au premier rang.

Plus de détails

Pour moi, il était utile de tester quelques-uns des meilleurs résultats générés par cette commande en les définissant comme mon miroir dans /etc/apt/sources.list et en faisant ensuite

time Sudo apt update

pour voir combien de temps il a fallu pour télécharger la liste de paquets à partir de ce miroir. J'ai testé les trois principales suggestions et elles étaient toutes rapides, mais l'une d'entre elles était deux fois plus rapide que les deux autres dans le test time Sudo apt update.

Voici un exemple de sortie 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
2
ntc2

Si vous voulez qu'un utilitaire fasse cela, vous pouvez l'implémenter comme un script bash simple, comme suit. Cela peut être utile si vous souhaitez utiliser l'utilitaire sans avoir besoin 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
0
gmatht

Les autres réponses, y compris la réponse acceptée, ne sont plus valides (pour Ubuntu 11.04 et les versions plus récentes) car elles recommandaient des paquets Debian tels que netselect-apt et apt-spy qui ne fonctionnent pas avec Ubuntu.

Il existe deux réponses différentes actives à cette question ci-dessous:

  1. tilisez la méthode mirror: de d'apt-get

    Cette méthode demande au serveur Ubuntu une liste des miroirs proches de vous, en fonction de votre adresse IP, et en sélectionne un. L'alternative la plus simple, avec comme inconvénient mineur, que parfois le miroir le plus proche ne soit pas forcément le plus rapide.

  2. Ligne de commande foo utilisant netselect
    Vous indique comment utiliser l'outil netselect pour rechercher les serveurs les plus récemment mis à jour les plus rapides que vous ayez installés - du point de vue du réseau et non pas géographiquement. Utilisez sed pour remplacer les miroirs dans sources.list.

Utilisez sed pour remplacer les miroirs dans sources.list

Étant donné que certaines sources utilisent des dossiers d’addition dans leur chemin, il pourrait être préférable d’utiliser la syntaxe de séparateur alternatif.

Sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
0
k0pernikus

J'utilise ce qui suit pour sélectionner automatiquement les miroirs (et désactiver 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
0
iheggie