it-swarm-eu.dev

Jak vyberete nejrychlejší zrcadlo z příkazové řádky?

Chci aktualizovat svůj sources.list soubor s nejrychlejším serverem z příkazového řádku v nové instalaci serveru Ubuntu. Vím, že je to s grafickým uživatelským rozhraním triviálně snadné, ale zdá se, že neexistuje jednoduchý způsob, jak to provést z příkazového řádku?

142
Evan
Pakket netselect-apt 
 
 Dapper (net): Vyberte nejrychlejší zrcadlo Debianu pomocí netselect 
 [Vesmír] 
 0.3.ds1-5: all 
 hardy (net): Vyberte nejrychlejší zrcadlo Debianu pomocí netselect 
 [vesmír] 
 0.3.ds1-11: all 
 Pakket apt-spy 
 
 Dapper (admin): píše soubor sources.list založený na testech šířky pásma 
 [Vesmír] 
 3.1-14 : AMD64 i386 powerpc 

Zdá se, že není součástí novějšího Ubuntu kvůli problémům se zabezpečením: viz: Bug report

Ale .. Normálně používám ping , abych zjistil rychlost připojení k nějakému umístění. Množství chmele a latence.

23
Rinzwind

Už nemusíte hledat - jako ajmitchvysvětleno , můžete použít deb mirror pro automatické výběr nejlepšího zrcadla.

apt-get nyní podporuje „zrcadlová“ metoda, která automaticky vybere dobré zrcadlo na základě vaší polohy. Uvedení:

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

nahoře ve vašem /etc/apt/sources.list soubor by měl být vše, co je potřeba k tomu, aby automaticky vybral zrcadlo podle vaší geografické polohy.

Uživatelé Lucid (10.04), Maverick (10.10), Natty (11.04) a Oneiric (11.10) mohou nahradit precise vhodným jménem.

148
badp

Zde je jeden způsob, který bude vždy fungovat, pomocí staré dobré netselect a některé grep magie:

Hacker „najít nejlepší server“ terminálu-addict!

  • Stáhnout a dpkg -inetselect pro vaši architekturu z webu Debian. (je to asi 125 KB, žádné závislosti)
  • Najděte nejrychlejší zrcátka Ubuntu z vaší polohy, buď aktuální, nebo nejvýše šest hodin pozadu (s vysvětlením níže, omlouvám se, že se v Markdownu pěkně nerozděluje)

    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 dělá to trochu podrobnější - chcete vidět průběžné tečky a zprávy, které vám říkají, že různá zrcadlení mapující na stejnou IP byla sloučena :)
    2. -sN určuje, kolik zrcadel chcete na konci (např. 10 nejlepších zrcadel)
    3. -tN je jak dlouho je každé zrcadlo testováno na rychlost (výchozí hodnota je 10; čím vyšší číslo, tím déle to trvá, ale spolehlivější výsledky).
  • Toto je backquotes věci (nevkládejte, jen pro vysvětlení)

     wget -q -O- https://launchpad.net/ubuntu/+archivemirrors 
     | grep -P -B8 "status (UP | SIX)" 
     | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wget vytahuje nejnovější stav zrcadla z https://launchpad.net/ubuntu/+archivemirrors .
    2. První grep extrahuje zrcátka, která jsou aktuální nebo šest hodin pozadu, spolu s 8 řádky předchozího kontextu, který obsahuje skutečné ftp/http URL
    3. Druhá grep extrahuje tyto ftp/http URL
  • Zde je ukázkový výstup z Kalifornie, 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/ 
    
    • “Pozice” jsou libovolné metriky; nižší je obvykle lepší.
    • Pokud vás zajímá, proč je švédsko-evropské zrcadlo kernel.org a zrcadlo NZ mezi třemi nejlepšími z Kalifornie , tak jsem také já; -) Pravda je, že netselect si ne vždy vybere nejvhodnější URL, která se má zobrazit, když se více zrcadel mapuje na jednu IP; číslo 3 je také známé jako nz.archive.ubuntu.com!
49
ish

Oneliner, který pro váš ip vybere nejlepší (podle rychlosti stahování) zrcadlo založené na mirrors.ubuntu.com.

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  }'
26
KAndy

Zde je skript Python Napsal jsem, že najde zrcadla s nejnižší TCP latence).

Skript také poskytuje šířku pásma a stavová data převzatá z launchpad a vygeneruje nové sources.list automaticky nebo pomocí zrcadla vybraného ze seznamu.

Příklad použití, který vám umožní vybrat si z 5 amerických zrcadel s nejnižší latencí pro váš stroj:

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

Vyvinul jsem jednoduchý skript nodejs založený na pingu, který testuje servery uvedené na serveru mirrors.ubuntu.com/mirrors.txt a vrací nejrychlejší:

Sudo npm install -g ffum
ffum

Prosím, dejte mi vědět, pokud to považujete za užitečné nebo máte nějaké návrhy (=

5
tentaculo

Vím, že to přímo neodpovídá na otázku OP, ale ve verzi Ubuntu pro stolní/GUI je tlačítko, které pro vás najde to nejlepší zrcadlo. Zdálo se, že to funguje docela dobře, tak jsem se na to krátce podíval, ale neměl jsem čas ho sledovat.

Důvod, proč to vychovávám, je ten, že si myslím, že by bylo docela rovné a použitelné udělat z něj nástroj pro příkazový řádek.

Pokud má někdo zájem, test se zdá být umístěn v:

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

Zase to je asi tak daleko, jak jsem se dostal, ale usoudil jsem, že to nechám tady pro případ, že by to někdo chtěl. Nejspíš si to vyzvednu, až budu mít trochu více času.

4
copeland3300

Pro příkazový řádek můžete použít nástroj Python nazvaný apt-smart

Příklad použití, který vám umožní uvést seznam zrcátek ve vaší zemi (automaticky detekovat):

$ apt-smart -l

S -l nebo --list-mirrors, dostanete (příklad výstupu ze serveru Travis CI USA):

---------------------------------------------------------------------------------------------------------
| Rank | Mirror URL                            | Available? | Updating? | Last updated    | Bandwidth   |
---------------------------------------------------------------------------------------------------------
|    1 | http://mirrors.gigenet.com/ubuntua... | Yes        | No        | Up to date      | 1.73 MB/s   |
|    2 | http://mirror.genesisadaptive.com/... | Yes        | No        | Up to date      | 1.68 MB/s   |
|    3 | http://ubuntu.mirrors.tds.net/pub/... | Yes        | No        | Up to date      | 1.4 MB/s    |
|    4 | http://repos.forethought.net/ubuntu   | Yes        | No        | Up to date      | 1.35 MB/s   |
|    5 | http://repo.miserver.it.umich.edu/... | Yes        | No        | Up to date      | 937.62 KB/s |
...
|   75 | http://mirror.cc.vt.edu/pub2/ubuntu   | Yes        | No        | 1 day behind    | 659.67 KB/s |
|   76 | http://mirror.atlantic.net/ubuntu     | Yes        | No        | 2 days behind   | 351.26 KB/s |
|   77 | http://mirror.lstn.net/ubuntu         | Yes        | No        | 4 days behind   | 806.81 KB/s |
|   78 | http://mirrors.usinternet.com/ubun... | Yes        | No        | 4 weeks behind  | 514.31 KB/s |
|   79 | http://mirrors.arpnetworks.com/Ubuntu | Yes        | No        | 19 weeks behind | 418.94 KB/s |
|   80 | http://mirrors.ocf.berkeley.edu/ub... | Yes        | Yes       | Up to date      | 446.07 KB/s |
---------------------------------------------------------------------------------------------------------
Full URLs which are too long to be shown in above table:
1: http://mirrors.gigenet.com/ubuntuarchive
2: http://mirror.genesisadaptive.com/ubuntu
3: http://ubuntu.mirrors.tds.net/pub/ubuntu
5: http://repo.miserver.it.umich.edu/ubuntu
...
78: http://mirrors.usinternet.com/ubuntu/archive
80: http://mirrors.ocf.berkeley.edu/ubuntu

Samozřejmě, apt-smart můžete také změnit svůj sources.list, pokud chcete:

$ apt-smart -a

S -a nebo --auto-change-mirror objevte dostupná zrcadla, řiďte zrcátka podle rychlosti připojení a stavu aktualizace a aktualizujte /etc/apt/sources.list tak, aby používal nejlepší dostupné zrcadlo.

S -c nebo --change-mirror MIRROR_URL aktualizujte /etc/apt/sources.list, aby používal daný MIRROR_URL.

Ve srovnání s jinými nástroji:

  • apt-smart automaticky zjistí, kde se nacházíte, takže při cestování do zahraničí nemusíte specifikovat zemi.
  • apt-smart provádí skutečné stahování HTTP z každého zrcadla, aby získal přesnější výsledky (šířku pásma a stav) a podporuje HTTP proxy, namísto použití ping a spoléhání se na nepřesná data launchpadu.
  • apt-smart je zachováno, zatímco většina ostatních nástrojů ponechává problémy dlouho nečinné.

Můžete snadno nainstalovat apt-smart via pip, podrobné instalační příkazy a použití copy'n'paste viz Project Readme .

4
Martin X

Příkaz, který najde rychlá zrcadla

On buntu 18.04 Dostal jsem dobré výsledky spuštěním

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

To vytiskne seznam zrcadel uspořádaných podle "času" (není vysvětleno), a pak jsem použil jedno ze zrcadel, které se zařadilo na nejvyšší.

Více informací

Pro mě bylo užitečné otestovat několik nejlepších výsledků výstupu pomocí tohoto příkazu tak, že je nastavím jako své zrcadlo v /etc/apt/sources.list a potom

time Sudo apt update

abyste viděli, jak dlouho trvalo stažení seznamu balíčků z tohoto zrcadla. Testoval jsem tři nejlepší návrhy a všechny byly rychlé, ale jeden z nich byl dvakrát rychlejší než ostatní dva v time Sudo apt update test.

Zde je příklad výstupu z 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

Pokud to chcete udělat pomocí nástroje, můžete implementovat takový nástroj jako jednoduchý bash skript, jako je následující. To může být užitečné, pokud chcete použít nástroj, aniž byste potřebovali 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

Nejjednodušší a nejefektivnější způsob, jak získat nejrychlejší zrcadlo, je použít apt mirror:// zdroj, viz

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

0
david

Ostatní odpovědi, včetně přijaté odpovědi, již nejsou platné (pro Ubuntu 11.04 a novější), protože doporučovaly balíčky Debian, jako například netselect-apt a apt-spy které nepracují s Ubuntu.

Níže jsou k dispozici dvě různé pracovní odpovědi na tuto otázku:

  1. Použijte apt-get 's mirror: metoda

    Tato metoda požádá server Ubuntu o seznam zrcadel ve vašem okolí na základě vaší IP a vybere jedno z nich. Nejjednodušší alternativa, s menší nevýhodou, že někdy nejbližší zrcátko nemusí být nejrychlejší.

  2. Příkazový řádek foo pomocí netselect
    Ukazuje, jak použít nástroj netselect k nalezení nejrychlejších nedávno aktualizovaných serverů od vás - síťově, nikoli geograficky. Použijte sed k nahrazení zrcadel v sources.list.

Použijte sed k nahrazení zrcadel v sources.list

Vzhledem k tomu, že některé zdroje používají jako součást své cesty další složky, může být lepší použít syntaxi alternativního oddělovače.

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

K automatickému výběru zrcadel používám následující (a deaktivuji 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