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


Je veux mettre à jour mon sources.list fichier avec le serveur le plus rapide de la ligne de commande dans une nouvelle installation du serveur Ubuntu. Je sais que c'est facile avec l'interface graphique, mais il ne semble pas y avoir de moyen simple de le faire depuis la ligne de commande?


123
2018-05-04 06:35


origine


Dans les expressions régulières, le. caractère signifie n'importe quel caractère. Si vous voulez qu'il corresponde à un., Vous devez y échapper avec \, donc us.archive [..] devrait être nous \ .archive [..] - Egil
En relation: askubuntu.com/questions/37753/… - Jorge Castro
Dans mon cas, je devais remplacer le # signes avec des barres obliques (/). Sinon j'ai eu sed: -e expression #1, char 53: unterminated s 'commande`. - Ethan Leroy
@EthanLeroy même ici avec Ubuntu 12.04.3 - logoff
Devrait être slash pas hash. - Matt H


Réponses:


Pakket netelect-apt

    dapper (net): Choisissez le miroir Debian le plus rapide avec netselect
    [univers]
    0.3.ds1-5: tout
    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 secte semble-t-il: voir: Rapport d'erreur

Mais .. j'utilise normalement juste ping pour connaître la vitesse d'une connexion à un endroit. Quantité de sauts et de latence.


19
2018-05-04 07:07



netselect-apt ne semble pas être disponible dans Ubuntu 12.04 - offby1
correct: voir ici bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377 - Rinzwind
Ce n'est pas la meilleure réponse, ou la meilleure réponse, cochez la suivante - ntg
La réponse à la question suivante pourrait avoir changé. - gmatht
apt-spy est parti à debian 9, mais netselect-apt est OK - netawater


Vous n'avez plus besoin de faire de recherche - comme ajmitch a expliqué, vous pouvez utiliser deb mirror d'avoir le meilleur miroir choisi pour vous automatiquement.

apt-get maintenant prend en charge une méthode «miroir» qui sélectionnera 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

sur le dessus dans votre /etc/apt/sources.list fichier devrait être tout ce qui est nécessaire pour le faire choisir automatiquement un miroir en fonction de votre emplacement géographique.

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


134
2017-10-23 10:31



Bon conseil. Notez simplement qu'après avoir effectué le changement, vous devez exécuter sudo apt-get update avant de faire apt-get install pour qu'il utilise votre miroir le plus proche. - Simon East
En relation: askubuntu.com/q/319433/11244 - Till
Bon conseil, mais inutile dans mon cas. Cela fonctionne sur la géolocalisation, me donnant le serveur local, qui est waaaayy plus lent où je suis. La distance temporelle du réseau est le facteur important ici, pas la distance spatiale. - jarondl
en fait, par exemple ici en Italie, de cette façon, utilisez un miroir qui a un téléchargement lent ... - Pisu
actuellement cassé: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184 - marathon


Voici un moyen qui fonctionnera toujours, en utilisant le bon vieux netselect et certaines grep la magie:

Le "trouver le meilleur serveur" du terminal-addict pirate!

  • Télécharger et dpkg -i  netselect pour votre architecture du site Web Debian. (environ 125 Ko, pas de dépendances)
  • Trouvez les miroirs Ubuntu les plus rapides à partir de votre emplacement, que ce soit à jour ou au maximum six heures après (je l'expliquerai ci-dessous, désolé que ça ne se divise pas 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: // [^ \"] * "`
    
  • netselect:

    1. -v le rend un peu verbeux - vous voulez voir des points de progression et des messages vous indiquant que différents mappages de miroirs sur la même IP ont été fusionnés :)
    2. -sN contrôle le nombre de miroirs souhaités à la fin (par exemple, les 10 meilleurs miroirs)
    3. -tN est la durée pendant laquelle chaque miroir est soumis à un test de vitesse (la valeur par défaut est 10; plus le nombre est élevé, plus le délai est long, mais plus les résultats sont fiables).
  • Ceci est le truc de backquotes (ne pas coller, juste pour l'explication)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status (UP | SIX)"
    | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wget tire le dernier statut de miroir de https://launchpad.net/ubuntu/+archivemirrors.
    2. La première grep extrait des miroirs qui sont à jour ou six heures de retard, ainsi que 8 lignes de contexte précédent qui incluent les URL ftp / http réelles
    3. La deuxième grep extrait ces URL ftp / http
  • Voici un exemple de sortie de Californie, États-Unis:

    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/
    
    • Les "rangs" sont une métrique arbitraire; plus bas est généralement mieux.
    • Si vous vous demandez pourquoi le miroir kernel.org Sweden-EU et un miroir NZ figurent parmi les trois premiers depuis CalifornieEh bien, moi aussi ;-) La vérité est que netselect ne choisit pas toujours l'URL la plus appropriée à afficher lorsque plusieurs miroirs correspondent à une seule adresse IP; le numéro 3 est également connu sous le nom nz.archive.ubuntu.com!

47
2018-05-24 06:45



netselect sélectionne les miroirs à faible latence udp ou icmp. Il ne sélectionne pas nécessairement des miroirs pouvant donner plus de bande passante. - Tobu
@pix J'ai approuvé votre modification, mais ce n'est pas la substitution de commandes qui entraîne le remplacement des nouvelles lignes. C'est le fractionnement de champ ultérieur qui a supprimé les nouvelles lignes. La substitution de commandes ne supprime que les nouvelles lignes. - muru
@muru merci, je viens d'apprendre quelque chose :) - pix


Voici une Script python J'ai écrit que trouve des miroirs avec la latence TCP la plus faible.

Le script fournit également des données de bande passante et de statut extraites de rampe de lancement, et générera une nouvelle sources.list fichier automatiquement ou en utilisant un miroir choisi dans une liste.


15
2018-06-10 23:58



C'est génial, merci! - Wouter Van Vliet
Je veux vous faire savoir que j'ai créé un paquet Debian avec votre script, prêt à être utilisé de manière simple et directe: github.com/brodock/apt-select/releases/tag/0.1.0 - Gabriel Mazetto
C'est une solution parfaite, car j'ai essayé les autres méthodes. pour rendre Noob sympa, j'ai écrit un article détaillant cette méthode: blog.kmonsoor.com/… - kmonsoor
C'est génial, car netselect n'est pas disponible dans les nouvelles versions d'Ubuntu - Tek


Oneliner qui sélectionne le meilleur (à la vitesse de téléchargement) miroir basé sur 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  }'

14
2018-01-10 19:40



Pour avoir plus d'options remplacer à la fin: sort -gr | head -3. - Pablo Bianchi
Actuellement, curl -s http://mirrors.ubuntu.com/mirrors.txt ne renvoie qu'une seule ligne: http://archive.ubuntu.com/ubuntu/ ce qui défait le but de choisir parmi plusieurs. : - / - Stéphane Gourichon
oui, donc cette méthode est NG. - netawater
J'ai trouvé le curl une partie de cette réponse utile parce que curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz où [server_url] est l'URL du miroir de base répertorié dans mirrors.txt, permet une comparaison de vitesse des 100 premiers fichiers d'index du miroir. - jamesc
Cela teste la vitesse de transfert, ce qui est certainement une amélioration par rapport à netselect. Cela ne fait que télécharger 10k de chaque serveur, ce qui peut ne pas être une excellente représentation de la vitesse de transfert stable sur les connexions plus rapides. Augmenter ce 102400 pour tester avec un téléchargement plus grand - Phil Miller


J'ai développé un simple script nodejs basé sur 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
2018-05-14 16:56



ffum ne fonctionne pas: erreur de connexion. - James Fu
Cela ne fonctionne pas: sortie vide. - Juan Simón
git clone le repo et courir node ffum - Michael
Génial, ça marche pour moi! J'ai eu un bug où il cherchait un noeud au lieu de nodejs ... serait aussi cool d'avoir de la verbose de chaque vitesse d'archive testée. - tweak2


Je sais que cela ne répond pas directement à la question du PO, mais il y a un bouton dans la version Desktop / GUI d'Ubuntu qui trouve le meilleur miroir pour vous. Cela semblait fonctionner plutôt bien, alors je l'ai examiné brièvement, mais je n'ai pas eu le temps de faire un suivi.

La raison pour laquelle je soulève la question est que je pense que ce serait assez simple et utilisable pour en faire un utilitaire de ligne de commande.

Si quelqu'un est intéressé, le test semble être situé 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 vais probablement y revenir quand j'aurai un peu plus de temps.


2
2017-10-29 21:35



Le 18.04, ce script détecte quand il est appelé en tant qu’application (comme principale) depuis un terminal .... et imprime simplement ses résultats au terminal. Assurez-vous de lui donner suffisamment de temps pour terminer. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com - PatKilg


J'utilise les éléments suivants 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
2017-07-09 12:37





Si vous voulez qu'un utilitaire fasse ceci, vous pouvez implémenter un tel utilitaire en tant que simple script bash comme celui-ci. 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
2018-01-24 04:52





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

Il y a deux différents travail réponses à cette question ci-dessous:

  1. Utilisation apt-get's mirror: méthode

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

  2. Ligne de commande foo utilisant netselect
    Vous montre comment utiliser le netselect outil pour trouver les serveurs les plus récents récemment mis à jour de votre part - en termes de réseau, pas géographiquement. Utilisation sed remplacer les miroirs sources.list.

Utilisation sed remplacer les miroirs sources.list

Étant donné que certaines sources utilisent des dossiers supplémentaires dans leur chemin, il est préférable d'utiliser la syntaxe de séparation alternative.

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

0
2018-04-10 07:58





Le moyen le plus simple et le plus efficace d’obtenir le miroir le plus rapide est d’utiliser mirror:// source, voir

https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/


-1
2018-01-04 08:35