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?
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.
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é.
Voici un moyen qui fonctionnera toujours, en utilisant le bon vieux netselect
et un peu de grep
name__:
dpkg -i
netselect
pour 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: // [^ \"] * "`
netselect
name__:
-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 :)-sN
contrôle combien de miroirs vous voulez à la fin (par exemple 10 premiers miroirs)-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: // [^ \"] * "
wget
extrait le dernier statut de miroir de https://launchpad.net/ubuntu/+archivemirrors .grep
extrait 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.grep
extrait ces URL ftp/httpVoici 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/
netselect
ne 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
!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 }'
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
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 (=
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.
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.
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
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
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:
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.
sed
pour remplacer les miroirs dans sources.list
.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
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