Komut satırından en hızlı yansıtmayı nasıl seçersiniz?


137

sources.listYeni bir Ubuntu Sunucusu kurulumunda, dosyamı komut satırından en hızlı sunucuyla güncellemek istiyorum . Bunun GUI ile son derece kolay olduğunu biliyorum, ancak komut satırından yapmanın basit bir yolu yok gibi görünüyor?


3
Düzenli ifadelerde,. karakter, herhangi bir karakter anlamına gelir. . Eğer bir maç için isterseniz, \ ile kaçmak gerekir, bu nedenle us.archive [..] .archive [..] \ bizi olmalıdır
Egil


2
Benim durumumda #işaretleri (> /) ile değiştirmek zorunda kaldım . Aksi halde sed: -e expression #1, char 53: unterminated s 'emri' var .
Ethan Leroy

@EthanLeroy burada Ubuntu 12.04.3 ile aynı
kapatma

Kesik değil eğik çizgi olmalı.
Matt H

Yanıtlar:


22
Paketleme netselect-apt

    dapper (net): Netselect ile en hızlı Debian aynasını seçin 
    [Evren]
    0.3.ds1-5: tümü
    hardy (net): netselect ile en hızlı Debian aynasını seçin 
    [Evren]
    0.3.ds1-11: tümü
Pakket casus

    dapper (admin): bant genişliği testlerine dayanarak sources.list dosyasını yazar 
    [Evren]
    3.1-14: amd64 i386 powerpc

Doğruluk sorunları nedeniyle yeni Ubuntu'ya dahil edilmemiş görünüyor: bkz: Hata raporu

Ama .. Normalde sadece bazı yerlerde bağlantı hızını bulmak için sadece ping kullanın. Atlama sayısı ve gecikme süresi.


4
-apt netselect Ubuntu 12.04 bulunmayabilir görünmüyor
offby1


8
Bu en çok oy alan ya da en iyi cevap değil, bir sonrakini kontrol edin
ntg 10:15

Hangi cevap "sonraki" değişmiş olabilir.
17:17

apt-spy debian 9'da gitti, ama netselect-apt tamam
netawater

147

Artık herhangi arama yapmak gerekmez - olarak ajmitch gelmiştir açıkladı kullanabileceğiniz deb mirroren iyi ayna sizin için otomatik olarak seçilmiş olması.

apt-get artık konumunuza göre otomatik olarak iyi bir ayna seçecek olan bir 'ayna' yöntemini destekliyor . koymak:

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

/etc/apt/sources.listDosyanızın en üstünde, coğrafi konumunuza göre sizin için otomatik olarak bir ayna seçmesi için gerekli olan her şey bulunmalıdır.

Lucid (10.04), Maverick (10.10), Natty (11.04) ve Oneiric (11.10) kullanıcıları preciseuygun adlarla değiştirebilirler .


Harika bir bahşiş. Sadece değişiklik yaptıktan sonra , en yakın aynayı kullanabilmeniz için sudo apt-get updateherhangi bir apt-get installşey yapmadan önce kaçmanız gerektiğini unutmayın .
Simon East


23
Güzel ipucu, ama benim durumumda yararsızdır. Coğrafi konum üzerinde çalışıyor, bulunduğum yerde yavaş çalışan yerel sunucuyu veriyor. Ağ zamansal mesafesi burada uzaysal mesafe değil, önemli faktördür.
jarondl


1
@marathon en az 18.04+ tarihinde düzeltildi
Pablo A

49

İşte her zaman işe yarayacak, eski netselectve biraz grepsihir kullanan bir yol :

Terminal bağımlısı "en iyi sunucuyu bul" hack!

  • İndirin ve dpkg -i netselectsizin mimarisi için Debian web sitesinden. (yaklaşık 125 KB, bağımlılık yok)
  • Bulunduğunuz konumdan en güncel Ubuntu aynalarını güncelleyin ya da en fazla altı saat geride bırakın (aşağıda açıklayacağım, üzgünüm Markdown'da ayrılmıyor)

    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 biraz ayrıntılı hale getirir - aynı IP ile eşleştirmenin farklı aynalarla birleştirildiğini gösteren ilerleme noktaları ve iletiler görmek istersiniz :)
    2. -sN sonunda kaç tane ayna istediğinizi kontrol eder (örneğin, en iyi 10 ayna)
    3. -tN Her bir aynanın ne kadar süreyle test edildiğinin ölçüsüdür (varsayılan değer 10'dur; sayı ne kadar yüksek olursa, o kadar uzun sürer ancak sonuçlar o kadar güvenilir olur.)
  • Bu backquotes olayıdır (yalnızca açıklama için yapıştırmayın)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "durum (YUKARI | ALTI)"
    | grep -o -P "(f | ht) tp: // [^ \"] * "
    
    1. wgetEn son ayna durumunu https://launchpad.net/ubuntu/+archivemirrors adresinden çeker .
    2. İlk grepalıntı, asıl ftp / http URL'lerini içeren önceki bağlamın 8 satırının yanı sıra güncel ya da altı saat geride olan aynaları gösterir.
    3. İkincisi grepbu ftp / http URL'lerini ayıklar
  • İşte Kaliforniya, ABD'den bir örnek çıktı:

    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/
    
    • "Sıralar" isteğe bağlı bir ölçüdür; düşük genellikle daha iyidir.
    • Neden kernel.org Sweden-EU aynası ve NZ aynasının California'nın en üstteki üçünde olduğunu merak ediyorsanız , öyleyse öyleyim netselect; tek bir IP ile çoklu ayna eşleşmesi; 3 numaralı olarak da bilinir nz.archive.ubuntu.com!

9
netselect düşük udp veya icmp gecikme süresi olan aynaları seçer. Daha fazla bant genişliği sağlayabilen aynaları seçmesi gerekmez.
Tobu,

@pix Düzenlemenizi onayladım, ancak yeni satırların değiştirilmesine neden olan komut değiştirme değil. Yeni satırları kaldıran sonraki alan bölmesidir. Komut değiştirme yalnızca sondaki yeni satırları kaldırır.
muru

25

En iyi seçen Oneliner (indirme hızına göre) aleyhinize mirrors.ubuntu.com a göre.

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

2
Daha fazla seçenek sonunda değiştirmek sağlamak için: sort -gr | head -3.
Pablo A

1
Şimdilik, curl -s http://mirrors.ubuntu.com/mirrors.txtsadece bir satır döndürür: http://archive.ubuntu.com/ubuntu/Bu birkaç tanesini seçme amacını ortadan kaldırır. : - /
Stéphane Gourichon

evet, bu yüzden bu yöntem NG'dir.
netawater

Buldum curlçünkü bu cevapların bir parçasını curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gznerede [server_url]listelenen baz ayna URL mirrors.txt, aynadan indeks dosyasının ilk ~ 100K bir hız karşılaştırılmasına olanak sağlar.
jamesc

Bu, netselect üzerinde kesinlikle bir gelişme olan transfer hızını test ediyor. Her sunucudan yalnızca 10k indiriliyor, bu da daha hızlı bağlantılarda sabit aktarım hızının mükemmel bir göstergesi olmayabilir. Bu 102400'ü daha büyük bir indirme ile test etmek için arttırın
Phil Miller

17

İşte yazdığım en düşük TCP gecikmeli aynaları bulan Python betiği .

Bu komut dosyası ayrıca launchpad'den alınan bant genişliği ve durum verilerini sağlar ve sources.listotomatik olarak veya listeden seçilen bir aynayı kullanarak yeni bir dosya oluşturur .

Makinenize en düşük gecikme süresi olan 5 ABD aynasından birini seçmenize izin veren bir kullanım örneği:

$ apt-select --country US -t 5 --choose


diğer yöntemleri denediğim gibi bu mükemmel bir çözüm. noob dostu yapmak için, bu yöntemi ayrıntılı bir yazı yazdım: blog.kmonsoor.com/…
kmonsoor

Bu harika, çünkü netselectUbuntu'nun yeni sürümlerinde bulunmuyor
Tek

Lütfen yayınınızda nasıl kullanılacağını gösterin
Jonathan,

@Jonathan bitti. Tam kullanım READMEilk bağlantıda.
John B,

5

Mirrors.ubuntu.com/mirrors.txt adresinde listelenen sunucuları test eden ve en hızlı şekilde döndüren basit bir ping tabanlı nodejs komut dosyası geliştirdim:

sudo npm install -g ffum
ffum

Lütfen yararlı bulursanız veya önerileriniz varsa bana bildirin (=


ffum çalışmıyor: Bağlantı hatası.
James Fu,

Çalışmıyor: Boş çıktı.
Juan Simón,

git clonerepo ve koşmaknode ffum
Michael

Müthiş, benim için çalışıyor! Düğümler yerine düğümü aradığı bir hatam vardı ... test edilen her arşiv hızından biraz daha ayrıntılı olması da harika olurdu.
tweak2

4

Bunun OP'nin sorusuna doğrudan cevap vermediğini biliyorum, ancak Ubuntu'nun masaüstü / GUI sürümünde sizin için en iyi aynayı bulan bir düğme var. Çok iyi çalışıyor gibiydi, bu yüzden kısaca araştırdım, ancak takip edecek vaktim yoktu.

Bunu ortaya çıkarmamın nedeni, komut satırı yardımcı programında kullanmanın oldukça basit ve kullanışlı olacağını düşünüyorum.

Herhangi biri ilgileniyorsa, testin bulunduğu yer:

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

Yine, sahip olduğum kadarıyla ilgili, ancak birinin istemesi durumunda bunu burada bırakacağımı düşündüm. Muhtemelen biraz daha zamanım olduğunda tekrar başarım.


18.04'te, bu komut dosyası bir terminalden uygulama ( ana olarak ) olarak ne zaman çağrıldığını algılar ve sonuçları terminale yazdırır. Tamamlanması için yeterli zaman ayırdığınızdan emin olun. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py>>[top 5 omitted] and the winner is: ny-mirrors.evowise.com
PatKilg

Ne yazık ki doğru çalışmıyor. Bu betik ping işlemi en düşük 5 sunucuyu alır, ardından ~ 1M dosyasını indirerek bunları bant genişliğine göre puanlar (dağıtıcınızdan ana paketler. Komut dosyasını 25 sunucuya yükseltmek ve 500M dosyasını indirmek için değiştirirseniz, bu sefer doğru olan tamamen farklı sonuçlar alırsınız.
Jocelyn

2

Hızlı Aynalar Bulunan Komut

On Ubuntu 18.04 ben çalıştırarak iyi sonuçlar aldık

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

Bu, "zaman" tarafından düzenlenen (açıklanmayan) aynaların bir listesini yazdırır ve sonra en üst sıradaki aynalardan birini kullandım.

Daha fazla detay

Benim için en iyi sonuçların birkaçını bu komutla aynayı benim aynam olarak ayarlayarak /etc/apt/sources.listve sonra bunları yaparak test etmek faydalı oldu.

time sudo apt update

Paket listesini bu aynadan indirmenin ne kadar sürdüğünü görmek için En üstteki üç öneriyi test ettim ve hepsi hızlıydı, ancak bir tanesi time sudo apt updatetestte diğer ikisinin iki katı kadar hızlıydı .

İşte örnek bir çıktı 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

1
Ne yazık ki doğru çalışmıyor. Bu betik ping işlemi en düşük 5 sunucuyu alır, ardından ~ 1M dosyasını indirerek bunları bant genişliğine göre puanlar (dağıtıcınızdan ana paketler. Komut dosyasını 25 sunucuya yükseltmek ve 500M dosyasını indirmek için değiştirirseniz, bu sefer doğru olan tamamen farklı sonuçlar alırsınız.
Jocelyn

1

Komut satırı için apt-smart adlı bir Python aracı kullanabilirsiniz.

Ülkenizdeki sıralı aynaları listelemenizi sağlayan bir kullanım örneği (otomatik olarak algılar):

$ apt-smart -l

-lVeya ile --list-mirrorsalacaksınız (Travis CI US sunucusundan örnek çıktı):

---------------------------------------------------------------------------------------------------------
| 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

Tabii ki, apt-smarteğer istiyorsanız, kaynaklarınızı da değiştirebilirsiniz:

$ apt-smart -a

İle -a, veya --auto-change-mirrormevcut aynalar keşfetmek bağlantı hızı ve güncelleme durumu ve mevcut en iyi ayna kullanmak /etc/apt/sources.list güncellemesinden aynalar rütbesine.

İle -cya --change-mirror MIRROR_URL/etc/apt/sources.list verilen MIRROR_URL kullanmak güncellemek için.

Diğer araçlarla karşılaştırıldığında:

  • apt-smart nerede olduğunuzu otomatik olarak bulur, böylece yurtdışına seyahat ederken ülkeyi belirtmeniz gerekmez.
  • apt-smartdaha doğru sonuçlar (bant genişliği ve durum) elde etmek için her yansıtmadan gerçek HTTP indirmesi yapar pingve fırlatma panelinin yanlış verilerine dayanmak yerine HTTP proxy'sini destekler .
  • apt-smart Diğer araçların çoğu sorunları uzun süre düzeltmiyor.

Kolayca yükleyebilirsiniz apt-smartyoluyla pip, ayrıntılı copy'n'paste için komutlar ve kullanımları bakın yüklemek Proje Benioku'yu .


0

Aynaları otomatik seçmek (ve deb-src'yi devre dışı bırakmak) için aşağıdakileri kullanıyorum

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

Bunu yapmak için bir yardımcı program istiyorsanız, aşağıdaki gibi basit bir bash betiği gibi bir yardımcı programı uygulayabilirsiniz. Pip / nodejs'ye gerek duymadan yardımcı programı kullanmak istiyorsanız bu yararlı olabilir.

#!/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

Kabul edilen cevap da dahil olmak üzere diğer cevaplar artık geçerli değil (Ubuntu 11.04 ve daha yenileri için) , Ubuntu ile birlikte olan netselect-aptve apt-spyçalışmayan Debian paketlerini tavsiye ettiler .

Bu sorunun iki farklı çalışma cevabı var:

  1. Kullanın apt-get 'in mirror:yöntemi

    Bu yöntem, Ubuntu sunucusundan IP'nize dayanarak yakınınızdaki aynaların bir listesini ister ve bunlardan birini seçer. En kolay alternatif, en küçük dezavantajı, bazen en yakın aynanın en hızlı olamayacağı yönünde.

  2. Netselect komutunu kullanarak komut satırı fooect aracını, sizden en son güncellenen sunucuları bulmak için netselect aracını
    nasıl kullanacağınızı gösterir - coğrafi açıdan değil ağ üzerinden. Aynaları değiştirmek için kullanın .sedsources.list

sedAynaları değiştirmek için kullanın .sources.list

Bazı kaynaklar ek klasörlerini yollarının bir parçası olarak kullandığından, alternatif ayırıcı sözdizimini kullanmak daha iyi olabilir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.