Jak wybrać najszybszy zwierciadło z wiersza poleceń?

126

Chcę zaktualizować plik sources.list najszybszym serwerem z wiersza poleceń w nowej instalacji Ubuntu Server. Wiem, że jest to łatwe z GUI, ale wydaje się, że nie ma prostego sposobu na zrobienie tego z wiersza poleceń?

    
zadawane Evan 04.05.2011, 08:35
źródło

12 odpowiedzi

19
Pakket netselect-apt

    dapper (net): Choose the fastest Debian mirror with netselect 
    [universe]
    0.3.ds1-5: all
    hardy (net): Choose the fastest Debian mirror with netselect 
    [universe]
    0.3.ds1-11: all
Pakket apt-spy

    dapper (admin): writes a sources.list file based on bandwidth tests 
    [universe]
    3.1-14: amd64 i386 powerpc

Nie uwzględniono w nowszym Ubuntu ze względu na problemy z secturity: Raport o błędzie

Ale ... Zwykle używam pinga , aby sprawdzić szybkość połączenia z jakąś lokalizacją. Ilość chmielu i opóźnienie.

    
odpowiedział Rinzwind 04.05.2011, 09:07
źródło
135

Nie musisz już więcej szukać - ponieważ ajmitch ma wyjaśniony , możesz użyć deb mirror do wybierz najlepsze lustro wybrane automatycznie.

% bl0ck_qu0te%     
odpowiedział badp 23.10.2010, 12:31
źródło
47

Oto jeden sposób, który zawsze będzie działał, używając dobrego starego netselect i trochę grep magii:

Hak hakera "znajdź najlepszy serwer" na terminalu!

  • Pobierz i dpkg -i netselect dla architektury ze strony Debiana. (około 125 KB , brak zależności)
  • Znajdź najszybsze mirrory systemu Ubuntu z twojej lokalizacji, albo aktualne albo co najwyżej sześć godzin temu (wyjaśnię to poniżej, przepraszam, że nie rozdziela się ładnie w 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 sprawia, że jest trochę gadatliwy - chcesz zobaczyć kropki postępu i komunikaty informujące o tym, że różne lustra mapujące do tego samego adresu IP zostały scalone:)
    2. -sN kontroluje liczbę serwerów lustrzanych na końcu (np. 10 najlepszych serwerów lustrzanych)
    3. -tN określa, jak długo każde lustro jest testowane pod kątem szybkości (domyślnie 10, im wyższa liczba, tym dłużej trwa, ale wyniki są bardziej wiarygodne).
  • To jest kopia zdań (nie wklejaj, tylko dla wyjaśnienia)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)" 
    | grep -o -P "(f|ht)tp://[^\"]*" 
    
    1. wget pobiera najnowszy status lustra z linku .
    2. Pierwszy grep wyodrębnia zwierciadła, które są aktualne lub sześć godzin w tyle, wraz z 8 wierszami poprzedniego kontekstu, który zawiera faktyczne adresy URL ftp / http
    3. Drugi grep wyodrębnia te adresy URL ftp / http
  • Oto przykładowy wynik z Kalifornii, 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/
    
    • "Rangi" są dowolną miarą; niższy jest zwykle lepszy.
    • Jeśli zastanawiasz się, dlaczego kernel.org Sweden-EU mirror i mirror NZ są w pierwszej trójce z California , cóż, ja też ;-) Prawdą jest, że netselect nie zawsze wybiera najbardziej odpowiedni adres URL do wyświetlenia, gdy wiele serwerów lustrzanych jest mapowanych na jeden adres IP; numer 3 jest również znany jako nz.archive.ubuntu.com !
odpowiedział ish 24.05.2012, 08:45
źródło
17

Oneliner, który wybiera najlepszy (według prędkości pobierania) mirror na podstawie mirrors.ubuntu.com dla twojego 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  }'
    
odpowiedział KAndy 10.01.2016, 20:40
źródło
16

Oto skrypt w języku Python , który napisałem, który znajduje zwierciadła o najniższym opóźnieniu TCP.

Skrypt zapewnia również przepustowość i dane o statusie pobrane z startera i automatycznie wygeneruje nowy plik sources.list lustro wybrane z listy.

Przykład użycia, który pozwala wybrać 5 lusterka w USA o najniższym opóźnieniu na komputerze:

$ apt-select —country US -t 5 —choose
    
odpowiedział John B 11.06.2014, 01:58
źródło
5

Opracowałem prosty skrypt ping nodejs, który testuje serwery wymienione na mirrors.ubuntu.com/mirrors.txt i zwraca najszybszy:

sudo npm install -g ffum
ffum

Daj mi znać, jeśli uznasz to za przydatne lub masz jakieś sugestie (=

    
odpowiedział tentaculo 14.05.2013, 18:56
źródło
2

Wiem, że to nie odpowiada bezpośrednio na pytanie OP, ale istnieje przycisk w wersji Ubuntu dla komputerów / GUI, który znajdzie najlepsze lustro dla ciebie. Wydawało się, że działa całkiem dobrze, więc zajrzałem do niego krótko, ale nie miałem czasu, aby kontynuować.

Powodem, dla którego to robię, jest to, że uważam, że byłoby to całkiem proste i użyteczne, aby uczynić z niego narzędzie wiersza poleceń.

Jeśli ktokolwiek jest zainteresowany, wydaje się, że test znajduje się w:

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

Znowu, to jest tak daleko, jak tylko dostałem, ale pomyślałem, że zostawię to tutaj na wypadek, gdyby ktoś chciał. Prawdopodobnie wybiorę go ponownie, gdy będę miał trochę więcej czasu.

    
odpowiedział copeland3300 29.10.2016, 23:35
źródło
0

Korzystam z poniższych opcji, aby automatycznie wybrać mirrory (i wyłączyć 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
    
odpowiedział iheggie 09.07.2016, 14:37
źródło
0

Jeśli chcesz to zrobić, możesz zaimplementować takie narzędzie jak zwykły skrypt bash, jak poniżej. Może to być przydatne, jeśli chcesz użyć narzędzia bez 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
    
odpowiedział gmatht 24.01.2017, 05:52
źródło
0

Pozostałe odpowiedzi, w tym zaakceptowana odpowiedź, nie są już ważne (dla Ubuntu 11.04 i nowszych), ponieważ zalecały pakiety Debiana, takie jak netselect-apt i apt-spy , które nie działają z Ubuntu.

Istnieją dwie różne działa odpowiedzi na to pytanie poniżej:

  1. Skorzystaj z apt-get metody mirror: % bl0ck_qu0te%
  2. Wiersz polecenia foo za pomocą netselect
    Pokazuje, jak korzystać z narzędzia netselect , aby znaleźć najszybsze ostatnio zaktualizowane serwery - w zależności od sieci, a nie geograficznie. Użyj sed , aby zastąpić mirrory w sources.list .

Użyj sed , aby zastąpić mirrory w sources.list

Ponieważ niektóre źródła używają folderów dodatkowych jako części ścieżki, lepiej użyć alternatywnej składni separatora.

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
    
odpowiedział k0pernikus 07.05.2018, 12:10
źródło
-1

Najłatwiejszym i najskuteczniejszym sposobem uzyskania najszybszego lustra jest użycie źródła apt mirror:// , patrz

link

    
odpowiedział david 10.04.2016, 09:58
źródło
-4

ładny program terminalu tutaj:

# apt-get install netselect-apt

Available Options

stable|testing|unstable|experimental|woody|sarge|etch|sid Specify which distribution of Debian to use. By default stable is used.

-s, --sources
While generating OUTFILE include also deb-src lines to use with ‘‘apt-get source’’ to obtain Debian source packages.

-i, --infile INFILE
Use INFILE instead of mirrors_full for reading mirror list. The file must be in the same format as mirrors_full.

-o, --outfile OUTFILE
Use OUTFILE instead of sources.list.

-n, --nonfree
Include also non-free section while generating OUTFILE.

-f, --ftp
Use FTP mirrors instead of HTTP and generate OUTFILE accordingly.

Examples

If you want non-free repos use the following command

# netselect-apt -n
    
odpowiedział debsid 04.01.2012, 09:35
źródło

Przeczytaj inne pytania na temat tagów