Vraag Hoe selecteer je de snelste spiegel van de opdrachtregel?


Ik wil mijn updaten sources.list bestand met de snelste server vanaf de opdrachtregel in een nieuwe Ubuntu Server-installatie. Ik weet dat dit eenvoudig is met de GUI, maar er lijkt geen eenvoudige manier om dit vanaf de opdrachtregel te doen?


123
2018-05-04 06:35


oorsprong


In reguliere expressies, de. teken betekent elk teken. Als je wilt dat het overeenkomt met a., Moet je eraan ontsnappen met \, dus us.archive [..] zou ons moeten zijn \ .archive [..] - Egil
Verwant: askubuntu.com/questions/37753/... - Jorge Castro
In mijn geval moest ik de # borden met slashes (/). Anders kreeg ik sed: -e expression #1, char 53: unterminated s 'commando'. - Ethan Leroy
@EthanLeroy hetzelfde hier met Ubuntu 12.04.3 - logoff
Moet slash not hash zijn. - Matt H


antwoorden:


Pakket netselect-apt

    dapper (net): Kies de snelste Debian-mirror met netselect
    [universum]
    0.3.ds1-5: alles
    hardy (net): kies de snelste Debian-mirror met netselect
    [universum]
    0.3.ds1-11: allemaal
Pakket apt-spion

    dapper (admin): schrijft een sources.list-bestand op basis van bandbreedtetests
    [universum]
    3.1-14: amd64 i386 powerpc

Niet inbegrepen in nieuwere Ubuntu vanwege secturity-problemen lijkt het: zie: Bug report

Maar ... normaal gebruik ik het gewoon ping om de snelheid van een verbinding met een bepaalde locatie te achterhalen. Aantal hop en latency.


19
2018-05-04 07:07



netselect-apt lijkt niet beschikbaar te zijn in Ubuntu 12.04 - offby1
correct: zie hier bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377 - Rinzwind
Dit is niet het meest upvoted, of het beste antwoord meer, controleer de volgende - ntg
Welk antwoord de volgende is, is mogelijk veranderd. - gmatht
apt-spy is weg bij debian 9, maar netselect-apt is OK - netawater


U hoeft niet meer te zoeken - zoals ajmitch heeft uitgelegd, je kunt gebruiken deb mirror om de beste spiegel automatisch voor u te laten selecteren.

apt-get ondersteunt nu een 'spiegel'-methode die automatisch een goede spiegel selecteert op basis van uw locatie. 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

op de top in uw /etc/apt/sources.list bestand moet alles zijn dat nodig is om ervoor te zorgen dat het automatisch een spiegel voor u kiest op basis van uw geografische locatie.

Lucid (10.04), Maverick (10.10), Natty (11.04) en Oneiric (11.10) gebruikers kunnen vervangen precise met de juiste naam.


134
2017-10-23 10:31



Geweldige tip. Houd er rekening mee dat u na het uitvoeren van de wijziging moet uitvoeren sudo apt-get update voordat je iets doet apt-get install om je dichtstbijzijnde spiegel te gebruiken. - Simon East
Verwant: askubuntu.com/q/319433/11244 - Till
Leuke tip, maar nutteloos in mijn geval. Het werkt op geolocatie en geeft me de lokale server, die langzamer waaaayy is waar ik ben. De tijdelijke afstand in het netwerk is hier de belangrijkste factor, niet de ruimtelijke afstand. - jarondl
in feite heeft bijvoorbeeld hier in Italië op deze manier een spiegel in gebruik die langzaam downloadt ... - Pisu
momenteel gebroken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184 - marathon


Hier is een manier die altijd zal werken, gebruik maken van goed oud netselect en een beetje grep magie:

De "Vind beste server" hack van de terminal-verslaafde!

  • Downloaden en dpkg -i  netselect voor je architectuur van de Debian-website. (het is ongeveer 125 KB, geen afhankelijkheden)
  • Vind de snelste Ubuntu-mirrors van jouw locatie, up-to-date of maximaal zes uur achter deze (ik zal het hieronder uitleggen, sorry dat het niet mooi opgesplitst is 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 maakt het een beetje uitgebreid - je wilt voortgangsstippen en berichten zien die je vertellen dat verschillende mirrors mapping naar hetzelfde IP zijn samengevoegd :)
    2. -sN bepaalt hoeveel spiegels u aan het eind wilt hebben (bijvoorbeeld top 10-spiegels)
    3. -tN is hoe lang elke spiegel is getest op snelheid (standaard is 10, hoe hoger het getal, hoe langer het duurt, maar hoe betrouwbaarder de resultaten.)
  • Dit zijn de backquotes-dingen (niet plakken, alleen voor uitleg)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P-B8 "status (UP | SIX)"
    | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wget haalt de nieuwste spiegelstatus uit https://launchpad.net/ubuntu/+archivemirrors.
    2. De eerste grep haalt spiegels uit die up-to-date zijn of zes uur achter, samen met 8 regels vorige context die de werkelijke ftp / http-URL's bevatten
    3. De seconde grep haalt deze ftp / http-URL's uit
  • Hier is een voorbeelduitvoer uit Californië, VS:

    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/
    
    • De "rangen" zijn een willekeurige statistiek; lager is meestal beter.
    • Als je je afvraagt ​​waarom de kernel.org Sweden-EU mirror en een NZ-mirror in de top drie staan Californië, nou, ik ook ;-) De waarheid is dat netselect kiest niet altijd de meest geschikte URL om weer te geven wanneer meerdere mirrors toewijzen aan een enkel IP; nummer 3 is ook bekend als nz.archive.ubuntu.com!

47
2018-05-24 06:45



netselect kiest mirrors met een lage udp of icmp latentie. Het kiest niet noodzakelijkerwijs spiegels die meer bandbreedte kunnen geven. - Tobu
@pix Ik heb je bewerking goedgekeurd, maar het is geen opdrachtsubstitutie die ertoe leidt dat nieuwe regels worden vervangen. Het is de daaropvolgende veldsplitsing die de nieuwe regels heeft verwijderd. Commandosubstitutie verwijdert alleen achterliggende newlines. - muru
@muru bedankt, ik heb net iets geleerd :) - pix


Hier is een Python-script Ik schreef dat mirrors vindt met de laagste TCP-latentie.

Het script biedt ook bandbreedte- en statusgegevens waarvan is uitgegaan lanceerplatform, en zal een nieuw genereren sources.list bestand automatisch in of gebruik een spiegel gekozen uit een lijst.


15
2018-06-10 23:58



Dat is geweldig, bedankt! - Wouter Van Vliet
Ik wil u laten weten dat ik een debian-pakket heb gemaakt met uw script dat klaar is om op een eenvoudige en eenvoudige manier te worden gebruikt: github.com/brodock/apt-select/releases/tag/0.1.0 - Gabriel Mazetto
dit is een perfecte oplossing, omdat ik de andere methoden heb geprobeerd. om noob vriendelijk te maken, heb ik een bericht geschreven waarin deze methode wordt beschreven :. blog.kmonsoor.com/... - kmonsoor
Dit is geweldig, sinds netselect is niet beschikbaar in nieuwere versies van Ubuntu - Tek


Oneliner die op basis van mirrors.ubuntu.com de beste (downloadsnelheid) kiest voor uw 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



Meer opties op het einde vervangen: sort -gr | head -3. - Pablo Bianchi
Momenteel, curl -s http://mirrors.ubuntu.com/mirrors.txt geeft slechts één regel terug: http://archive.ubuntu.com/ubuntu/ die het doel van het kiezen uit verschillende verslaat. : - / - Stéphane Gourichon
ja, dus deze methode is NG. - netawater
ik vond de curl onderdeel van dit antwoord nuttig omdat curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz waar [server_url] is de basisspiegel-URL die wordt vermeld in mirrors.txt, staat een snelheidsvergelijking van de eerste ~ 100K van het indexbestand toe vanuit de spiegel. - jamesc
Dit test de overdrachtssnelheid, wat zeker een verbetering is ten opzichte van netselect. Het downloadt alleen maar 10k van elke server, wat misschien niet zo'n goede weergave is van de constante overdrachtssnelheid op snellere verbindingen. Verhoog die 102400 om te testen met een grotere download - Phil Miller


Ik heb een eenvoudig op ping gebaseerd nodejs-script ontwikkeld dat de servers test die op mirrors.ubuntu.com/mirrors.txt worden vermeld en de snelste retourneert:

sudo npm install -g ffum
ffum

Laat het me weten als je het nuttig vindt of suggesties hebt (=


5
2018-05-14 16:56



ffum werkt niet: verbindingsfout. - James Fu
Het werkt niet: lege uitvoer. - Juan Simón
git clone de repo en rennen node ffum - Michael
Geweldig, werkt voor mij! Ik had een fout waarbij het naar een node in plaats van nodejs op zoek was ... ook zou het cool zijn om wat uitgebreide informatie te hebben over elke geteste archiefsnelheid. - tweak2


Ik weet dat dit niet direct de vraag van het OP beantwoordt, maar er is een knop in de desktop- / GUI-versie van Ubuntu die de beste spiegel voor je vindt. Het leek vrij goed te werken, dus ik heb er kort naar gekeken, maar had geen tijd om het op te volgen.

De reden dat ik het naar voren breng is omdat ik denk dat het vrij eenvoudig en bruikbaar zou zijn om er een hulpprogramma voor de commandoregel van te maken.

Als iemand geïnteresseerd is, lijkt de test zich te bevinden in:

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

Nogmaals, dat is ongeveer zo ver als ik heb, maar ik dacht dat ik dit hier zou laten voor het geval iemand het wilde. Ik zal er waarschijnlijk weer bovenop komen als ik iets meer tijd heb.


2
2017-10-29 21:35



Op 18.04 detecteert dit script wanneer het wordt aangeroepen als een toepassing (als hoofd) vanaf een terminal .... en drukt de resultaten ervan gewoon af naar de terminal. Zorg ervoor dat je genoeg tijd hebt om het te voltooien. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com - PatKilg


Ik gebruik het volgende om automatisch mirrors te selecteren (en deb-src uit te schakelen)

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





Als je wilt dat een utility dit doet, zou je zo'n hulpprogramma kunnen implementeren als een eenvoudig bash-script, zoals het volgende. Dit kan handig zijn als u het hulpprogramma wilt gebruiken zonder 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