Ayna yapma: //mirrors.ubuntu.com yüksek oranda erişilebilir


26

Biz dağıtık bir ekibiz, bu yüzden VM'lerimiz Ubuntu mirror://kurulumunu kullanıyor. Bizim /etc/apt/sources.listaşağıdaki gibi görünüyor:

deb mirror://mirrors.ubuntu.com/mirrors.txt lucid main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt lucid-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt lucid-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt lucid-security main restricted universe multiverse

Bu, kendi başına oldukça şaşırtıcı ve farklı yerlerde çalışan insanlar için çok yararlı - daha az yerel özelleştirme, vb. Gerekli. Teoride başarısızlık.

Günlük olarak, bu kurulum çok sık başarısız oluyor. Bu hafta 2-3 kez söylemek istiyorum.

Şimdi dolap dolabım olarak mirrors.ubuntu.comgeri döndü ftp.uni-bayreuth.de. Ne yazık ki, aşağı gibi görünüyor.

Bu birkaç saattir devam ediyor ve ayna bir üniversitedeki gönüllüler tarafından ağırlanıyor ve bugün Cuma günü, umutlarım düşük ve bunun yakında düzeltilmesi bekleniyor.

Tüm konuşmam, sorum şu:

  • Bunu kullanan var mı?
  • Arıza süreleri nasıl çalışır? (hızlı düzeltmem bir kabuk betiğidir)
  • Bu durumun iyileştirilmesine nasıl yardımcı olabilirim?


@ RaduRădeanu - ilk defa netselect okudum ... 8oş
dschinn1001

@ RaduRădeanu İlginç bir ipucu! Şerefe! İş mirror:parçanızda en çok güncelleştirilen yöntemi kullanmaya çalışıyorum . Benim sorunum, en hızlı ayna ne zaman başarısız olursa, o zaman yerine çalışma olmaz ve sıkışıp kalırım.
kadar

Kendi Ubuntu Ayna Kendiniz için bir seçenek mi oluşturuyor?
Mitch

@Till Kendi aynan varsa bana haber verebilir misin?
Mitch

Yanıtlar:


10

Şahsen en iyi Ubuntu depoları aynalarını seçmenin en iyi yolunun GUI yöntemini kullanmak olduğunu düşünüyorum:

indirme sunucusu

Şimdi, soruda açıklanan durumu iyileştirmek için, bir şekilde bazı kurallar koymanız gerekir. Bu kurallara uymak gerekir mirrors.ubuntu.com. Aşağıdaki bazı kuralları önerebilirim:

  • en iyi / tercih edilen aynaların bir listesini yapın; Burada , burada veya burada gördüğünüz gibi birçok ayna var
  • iyi bir ayna bulduysan listeye ekle
  • eğer bir ayna bazen kırıldıysa veya kırıldıysa, bunun iyi bir ayna olmadığı ve listeden çıkarmanız gerektiği anlamına gelir.
  • kullanabilirsiniz netselect, apt-spyveyaapt-fast
  • ve gereksinimlerinize bağlı olarak diğerleri.

Sonra, nasıl çalışabileceğinizi görmek için, üç bash betiği örneği ile adım adım açıklanan bir yöntem verebilirim. İlk senaryo, şu anda bulunduğunuz ülkeden gelen aynaları kullanmak yerine mirrors.ubuntu.com/mirrors.txt(her ülke için yansıtılmış aynaların olduğu bir metin dosyası vardır; bkz. Http://mirrors.ubuntu.com/ ):

  • Bir terminal çalışmasında mkdir -p bin- bu komut sizde yoksa bin, homeklasörünüzde bir dizin oluşturacaktır .
  • Çalıştırdıktan sonra gedit ~/bin/change_sources.sh- bu yeni dosyayı change_sources.shgedit'te yaratacaktır .
  • Yeni oluşturulan dosyaya bir sonraki komut dosyalarından birini kopyalayıp yapıştırın:
#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

ip=$(curl -s 'http://ipecho.net/plain')
country=$(curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode' \
    | awk '{ print toupper($2) }')
release=$(lsb_release -sc)

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

line=$(head -n 1 $file)
new_line="## Ubuntu Repos for $ip"

if [ "$line" == "$new_line" ] ; then
    exit 0
fi

cp -f $file $old_file

printf "$new_line
deb mirror://mirrors.ubuntu.com/$country.txt $release main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-security main restricted universe multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0

veya http://repogen.simplylinux.ch/ adresinde bulunabileceklere benzer bir şey :

#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

ip=$(curl -s 'http://ipecho.net/plain')
country=$(curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode' \
    | awk '{ print tolower($2) }')
release=$(lsb_release -sc)

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

line=$(head -n 1 $file)
new_line="## Ubuntu Main Repos for $ip"

if [ "$line" == "$new_line" ] ; then
    exit 0
fi

cp -f $file $old_file

printf "$new_line
deb http://$country.archive.ubuntu.com/ubuntu/ $release main restricted universe  multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release main restricted universe multiverse

## Ubuntu Update Repos for $ip
deb http://$country.archive.ubuntu.com/ubuntu/ $release-security main restricted universe multiverse
deb http://$country.archive.ubuntu.com/ubuntu/ $release-updates main restricted universe multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release-security main restricted universe multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release-updates main restricted universe multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0

ya da izx'in kullandığı bir komut dosyası netselect( buradan indirin , talimatları buradan yükleyin ) izx bu cevabın verry :

#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

url=$(netselect \
    `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors \
        | grep -P -B8 "statusUP|statusSIX" \
        | grep -o -P "(f|ht)tp.*\"" \
        | tr '"\n' '  '` \
    | awk '{print $2}')
release=$(lsb_release -sc)

if [ "$url" == "" ] ; then
    exit 0
fi

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

cp -f $file $old_file

printf "## Ubuntu Best Repos
deb http://extras.ubuntu.com/ubuntu $release main
deb-src http://extras.ubuntu.com/ubuntu $release main
deb $url $release main universe restricted multiverse
deb http://security.ubuntu.com/ubuntu/ $release-security restricted universe main multiverse
deb $url $release-updates restricted universe main multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0
  • Dosyayı kaydedin ve kapatın.
  • Terminale geri dönün ve çalıştırın: chmod +x ~/bin/change_sources.sh- betiğin çalıştırılmasına izin vermek için.
  • Sadece test için, yeni betiğinizi çalıştırmak için terminal yazın ~/bin/change_sources.sh. Size bir hata verecektir, çünkü düzenleme hakkınız yoktur /etc/apt/sources.list. Öyleyse kullansudo ~/bin/change_sources.sh
  • Kök kullanıcının crontab dosyasını sudo crontab -ekomutu kullanarak düzenleyin ve aşağıdaki satırı ekleyin:
@hourly /home/$USER/bin/change_sources.sh  
#change $USER with your user name
  • Her saat için cron işini ayarladım, ancak dilediğiniz veya daha iyi olduğunu düşündüğünüz gibi değiştirebilirsiniz. Bkz http://en.wikipedia.org/wiki/Cron bu anlamda.
  • Dosyayı kaydedin ve yeni crontab girişini ile kontrol edin sudo crontab -l.

NOT: Bu betiğin yaptığı değişiklikleri geri almak için, cron işini silin ve yukarıdaki resimden gelen talimatları izleyin veya terminalde bir sonraki komutu kullanın:

cp -f /etc/apt/sources.list.bak /etc/apt/sources.list

Bundan sonra, dosya IP adresinde bir değişiklik bulduktan sonra dinamik olarak değişecektir.

En iyi çözüm olmayabilir, ancak bence yukarıdaki senaryolarda olduğu gibi bu şekilde iyi bir çözüm verilebilir .


2
Sanırım, Linux'taki bir GUI'nin geleneksel yöntem olarak kabul edilip edilmeyeceğini tartışabilirim. :) Ama yine de: İlk senaryonuz bir problemi çözdü, bende yok. Ayna sözdizimi zaten Alman aynalarımı ya da ABD’yi ya da insanların nerede olduğunu alır. İkinci senaryo ülke aynalarını kullanıyor - mevcut en düşük bant genişliğine sahip gibi görünüyorlar (fırlatma panelindeki arkaplanlar listesinde göründüğü gibi), üçüncü script ise hızlı (veya en yakın) bir aynanın gerçekten en iyisi olduğunu varsayıyor. Silbaştan. apt-spyŞu anda küçük bir senaryo kodluyorum. Burada daha sonra güncellenecek.
kadar

1
@Peki, sorunuz "Arıza süresi boyunca nasıl çalışıyorsunuz? " Ve " Bu durumu iyileştirmeye nasıl yardımcı olabilirim ? " İdi . Etrafta nasıl çalıştığımı gösterdim ve size nasıl geliştireceğinizi önerdim ... Ayrıca, cevabımı sonuna kadar okursanız, " En iyi çözüm olmayabilir, ama sanırım şunu biliyorum; Yukarıdaki komut dosyalarında olduğu gibi bu şekilde iyi bir çözüm verilebileceğini "söyledi. Son olarak, bozuk sunucuları düzeltmek / geliştirmekle ilgileniyorsanız, bu konu dışı görünüyor ve bunun yerine bu sunucuların sahipleriyle konuşmalısınız.
Radu Rădeanu

2
Konu dışı olduğunu sanmıyorum. Çeşitli Canonical / Ubuntu çalışanları sorumu buraya eklememi söyledi. Bu yüzden ilk etapta buradayım ve neden bir ödül verildiğini de tahmin ediyorum.
kadar

1
@ Yep'e kadar, soru iyi, ancak bu yorumlarda yeniden formüle ettiğiniz gibi değil. İlgili sunucuda yönetici olmadığı sürece hiç kimse "bozuk bir ayna sunucusunu nasıl düzelteceğinizi" yanıtlayamaz.
Radu Rădeanu

1
Bu sunucuyu düzeltmek istemiyorum, seçim algoritmasını ve yerine çalışma eksikliğini düzeltmek istiyorum.
Till

4

Bu soruya girdiğiniz tüm girdiyi takdir ediyorum, ancak hiç kimse koşullarımıza uygun basit bir çözüm bulamadığından , sorunu kendim çözmeye karar verdim.

Aradığım bir araç (özellikle Ubuntu için) oluşturdum apt-spy2.

Bu aracın temel amacı hızlı çalışan bir ayna bulmaktır . Çalışma, ayna sunucusunun kullanılabilir olduğu ve (umarım :) güncel olduğu ile tanımlanır.

Seçilen sunucunun mutlaka en yakın ve en hızlı olup olmadığına dair hiçbir varsayımda bulunmuyorum. Herhangi bir ping veya GEO DNS hilesi yapmıyorum - ama bu bir şey bozulduğunda işe yarıyor.

Nasıl çalışır - Özetle:

  1. Sunucuları almak için http://mirrors.ubuntu.com ya da launchpad'in ayna listesini kullanıyorum .
  2. Her birinde basit bir kontrol yapıyorum (HTTP Yanıt Durum Kodu için).
  3. LBNL, güncelleme yapıyorum /etc/apt/sources.list.

Lütfen dikkat: Bu, insanların iyi oynadığını ve ek aynalar koyduğunu varsayar (örneğin 3. parti depoları içine yerleştirir /etc/apt/sources.list.d.

Bu aracı şöyle elde edebilirsiniz:

$ [sudo] gem install apt-spy2

Cli ile gelir list, check, fixve help(bunu nasıl kullanılacağı hakkında genişletilmiş bilgilerle).

Projenin README'sinde mümkün olduğunca belgelemeye çalıştım .

Mevcut sürüm çok muhafazakar 0.5.0.

Kod açık kaynak ve lisans liberal. Ve bütün katkıları ben alıyorum.


Bunu ubuntu depolarına yükledin mi?
Braiam

@Braiam Bu aracı şu şekilde elde edebilirsiniz: sudo gem install apt-spy2
Radu Rădeanu

@ RaduRădeanu Debian'a birşeyler paketlemekle ilgilendiğim için onu yükleyip yüklemediğini soruyorum.
Braiam

@Braiam Paketlemedim, ama biri yaparsa memnuniyetle karşılayabilirim. :)
Till

@ Braiam Btw, Bu Debian ile çalışmak mümkün değildir. ; (Sadece Ubuntu ile çalışır.
kadar

2

Debian 6.0.4'te bu komut vardı:

apt-spy

Bu, bir sonraki en yakın kullanılabilir sunucuyu otomatik olarak bulmak ve yeni bir kaynak oluşturmak için iş yaptı.

Ubuntu'da bu komut var görünmüyor mu?

Hala Debian 7.0 wheezy'da var:

https://launchpad.net/debian/wheezy/+source/apt-spy/+copyright

* .Deb paketinizi buradan indirebilirsiniz:

http://packages.debian.org/sid/apt-spy

... hala kaynakları araştırıyor ...

Girişli kaynak listesini düzenledikten sonra kaynak kodunu almak için açık bir şekilde Debian-7.0-Installation'a ihtiyacınız var:

deb-src http://http.debian.net/debian wheezy ana

Daha sonra sudo apt-get güncellemesinden sonra, kodu aşağıdaki ile basitçe emersiniz:

sudo apt-get kaynak apt-spy


Öneri için teşekkürler, apt-spy gerçekten harika görünüyor. Bunun iyi çalıştığından emin değilim. Debian'ları her zaman ubuntu'ya kurduğumda, diğer bağımlılıklar nedeniyle er ya da geç kırdı.
kadar

@Till - Her zaman biraz daha kazma ile bir şeydir ... Linux daha zorlu hale gelir gelmez.
dschinn1001


@Till Bunu mu demek istediniz: Build it ...! veya Yaptı ...? - Bir dahaki sefere bakıyorum - şimdi burada dolunay ve ben
harikayım

Hızlısın !
dschinn1001

2

Belki de sevdiğiniz çözümü kullanmıyor olabilirsiniz, ancak .deb dosyaları için yerel bir önbellek ayarlamak birkaç MB paket indirirken ideal olmalıdır (çoğu bahis aynıdır) ve aynı sunucudan indirdiğiniz için önbelleği yapmak ve sunucuyu daha az meşgul yapmak için bir bilgisayarı feda etmek isteyebilir.

prosedür

apt-cacherSabit Sürücüde çok fazla alana sahip bir makine ayarlayabilmelisiniz (buna ihtiyacınız olacaktır). Bunu Apt-cacher sunucu kılavuzunu kullanarak yapılandırabilirsiniz , ancak hızlı bir özgeçmiş yapalım.

  1. kurmak apt-cacher

    sudo apt-get yüklemek apt-cacher apache2

  2. Düzen /etc/default/apt-cacherve set autostartdeğeri 1 olarak sizin önbellek başlar böylece makinenin güç kadar.
  3. Apache'yi yeniden başlat sudo /etc/init.d/apache2 restart
  4. Kullanarak önbelleğinizi test edin http://ip-of.your.cache:3142/apt-cacher.
  5. Ana makinenin önbelleği kullanmasına izin vermelisiniz, bu nedenle /etc/apt-cacher/apt-cacher.confsatırı düzenleyin ve arayın allowed_hosts. Alt ağları tıpkı tüm ana bilgisayarlar gibi 192.168.0.0/24veya sadece*
  6. Etrafında hızlı ve güvenilir bir sunucu arayın . Bunun için kullanabilirsiniz apt-spy(bu komut her sunucunun hızını da test ettiği için saatler alabilir).
  7. Müşterilerinizde iki seçeneğiniz var:

    • sources.listaşağıdaki gibi ayarlayın :

    deb http: //ip-of.your.cache: 3142 / the.server.you.like / ubuntu / lucid ana sınırlı evren multiverse

    Değişim ip-of.your.cacheiçin önbellek ip ve the.server.you.likekullandığınız olacak sunucusunun ana bilgisayar adı için. Birkaç satır kullanabilirsiniz.

    • Veya bir proxy kullanmak için apt'yi ayarlayın: /etc/apt/apt.conf.d/01proxysatırı düzenleyin ve ekleyin:

    Edinme :: http :: Proxy " http: //ip-of.your.cache: 3142 ";


Eğer apt-spy 'yi dünya çapında kullanırsanız, bir süre
dayanır

@ dschinn1001 -d testingDebian gibi kokuyor.
Braiam,

iyi o zaman: apt-spy -a Avrupa
dschinn1001

"Oy kullanma" mı? - Hiç oy kullanmadım mı? - Bazen fareyle kazayla tıklarsam olur - Asla bilerek oy kullanmam! bu yüzden size oy verdi! Teşekkürler.
dschinn1001

1

Kendi Ubuntu aynasını kurmayı deneyebilirsin. Bu şekilde güncellemeler yerel olacaktır.

apt-mirror yüksek hızlı internet bağlantısı ve çok fazla disk alanı gerektiriyor

Apt-mirror kullanarak kendi Ubuntu aynanızı oluşturmak çok kolaydır.

1) apt-mirror deposuna gidin. Sources.list dosyanızı şu şekilde yedekleyin:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

2) sources.list dosyasını şöyle düzenleyin:

gksudo gedit /etc/apt/sources.list

3) Aşağıdakileri yeni bir satıra yerleştirin:

deb http://apt-mirror.sourceforge.net/ apt-mirror

4) Paket dizinini güncelleyelim

sudo apt-get update

5) Ve apt-mirror'ı yükleyin

sudo apt-get install apt-mirror

6) Apt-mirror şimdi ayarlandı, bu yüzden hangi sunuculara yansıtılacağını söyleyelim:

sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.old
gksudo gedit /etc/apt/mirror.list

Varsayılan yapılandırma indirilen dosyalarınızı / var / spool / apt-mirror klasörüne yerleştirir. Mirror.list dosyası şöyle görünür:

############# config ##################
#
set base_path /media/silo/repo
#
# if you change the base path you must create the directories below with write privlages
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
set nthreads 20
set tilde 0
#
############# end config ##############
deb http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -security main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu

bu sadece ikili paketleri yansıtır ancak kaynak paketleri istiyorsanız, uygun satırları eklemelisiniz. Genellikle forma girerler:

deb-src http://gh.archive.ubuntu.com/ubuntu/ lucid main restricted

7) Şimdi koşun apt-mirror. Bu biraz zaman alacak. Tek seferde tüm dosyaları indiremezseniz endişelenmeyin, apt-mirrorindirmeye devam edebilirsiniz (devam etmek istediğinizde Ctrl+ Ctuş birleşimiyle kapatın ve yeniden çalıştırın). Tamam, aynayı aynen çalıştır:

sudo apt-mirror /etc/apt/mirror.list

Ayrıca apt-mirror ile Yerel Bir Debian / Ubuntu Aynası Nasıl Oluşturulur

Kaynak: Kendi Ubuntu Aynasını Oluşturmak için Apt-mirror'ı kullan


Hafıza bana doğru hizmet ederse apt-mirror, ubuntu depolarında mevcuttur.
Braiam,

Btw

Cevabınız için teşekkürler ve aynayı ayarlamak için harika bir kaynak ve bunu düşündüm, ama sonra bu setuo'ya en az 3 farklı yerde ihtiyacım olacaktı. Burada seçici olduğumu biliyorum ama yine mirrors.ubuntu.comde çalışması gerektiğini düşünüyorum . :)
Till

@till mirrors.ubuntu.comasla çözülmeyecek mirrors.ubuntu.com, ancak size en yakın olan sunucu. Sorun şu ki çözdüğü sunucu güvenilir değil. Daha iyi oynamanız resmi listeden güvenilir bir sunucu kullanmak.
Braiam,

@Braiam güvenilmez aynaların neden onun tarafından iade edildiği hakkında bir fikriniz var mı?
Till

1

Apt-select adında bir Python betiği yazdım.GUI yöntemine bir CLI alternatifi olarak hizmet etmek için .

Komut dosyası her yansıtmayı TCP üzerinden sorgular, en düşük gecikmeli stdout yansıtmaya yazdırır ve yeni bir sources.listdosya oluşturur . Sıralanmış aynalar listesinden seçim yapmanıza ve aynanın en son ne zaman güncellendiği ve bant genişliği kapasitesi gibi bilgileri almanıza izin veren birden fazla seçenek vardır.

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.