Udostępnianie Mirror: //mirrors.ubuntu.com

26

Jesteśmy zespołem rozproszonym, dlatego nasze maszyny wirtualne używają mirror://konfiguracji Ubuntu . Nasze /etc/apt/sources.listwygląda następująco:

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

To samo w sobie jest dość niesamowite i bardzo pomocne dla osób pracujących w różnych lokalizacjach - mniej lokalnych dostosowań itp. Jest konieczne. Praca awaryjna w teorii.

Z dnia na dzień ta konfiguracja kończy się zbyt często. Chcę powiedzieć 2-3 razy w tym tygodniu.

Teraz mirrors.ubuntu.comwraca ftp.uni-bayreuth.dejako moje lustro w szafie. Niestety wydaje się, że jest wyłączony.

Trwało to od kilku godzin, a lustro jest hostowane przez wolontariuszy na uniwersytecie i dzisiaj, w piątek, mam nadzieję, że wkrótce zostanie to naprawione.

Wszystkie rozmowy, moje pytania to:

  • Czy ktoś tego używa?
  • Jak radzisz sobie z przestojami? (moja szybka poprawka to skrypt powłoki)
  • Jak mogę pomóc w poprawie tej sytuacji?
Do
źródło
@ RaduRădeanu - po raz pierwszy czytam o netselect ... 8oþ
dschinn1001
@ RaduRădeanu Ciekawa wskazówka! Twoje zdrowie! Próbuję użyć mirror:metody, która miała najwięcej aktualizacji w twoim wątku. Mój problem polega na tym, że ilekroć najszybsze lustro zawiedzie, wtedy nie ma pracy awaryjnej i utknąłem.
Do
Czy utworzenie własnego Ubuntu Mirror jest opcją?
Mitch
@ Do Czy możesz dać mi znać, czy możesz mieć własne lustro.
Mitch

Odpowiedzi:

10

Osobiście uważam, że najlepszym sposobem na wybranie najlepszych kopii lustrzanych repozytoriów Ubuntu jest użycie metody GUI:

serwer pobierania

Teraz, aby poprawić sytuację opisaną w pytaniu, musisz jakoś ustalić pewne reguły. Te zasady muszą działaćmirrors.ubuntu.com . Mogę zasugerować następujące zasady:

  • sporządzić listę najlepszych / preferowanych serwerów lustrzanych; jest wiele luster, jak widać tutaj , tutaj lub tutaj
  • jeśli znalazłeś dobre lustro, dodaj je do listy
  • jeśli lustro było czasami uszkodzone lub zepsute, oznacza to, że nie jest to dobre lustro i należy usunąć je z listy
  • można użyć netselect, apt-spylubapt-fast
  • i inne, w zależności od twoich wymagań.

Następnie, aby zobaczyć, jak możesz się obejść, mogę podać metodę opisaną krok po kroku z trzema przykładami skryptów bash. Pierwszy skrypt korzysta z kopii lustrzanych z kraju, w mirrors.ubuntu.com/mirrors.txtktórym aktualnie przebywasz (dla każdego kraju istnieje plik tekstowy z powiązanymi kopiami; patrz http://mirrors.ubuntu.com/ ):

  • W uruchomieniu terminalamkdir -p bin - to polecenie utworzy binkatalog w twoimhome folderze, jeśli jeszcze go nie masz.
  • Po uruchomieniu gedit ~/bin/change_sources.sh- spowoduje to utworzenie nowego plikuchange_sources.sh w gedit.
  • Skopiuj i wklej jeden z kolejnych skryptów w nowo utworzonym pliku:
#!/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

lub coś podobnego do tego, co można znaleźć na stronie http://repogen.simplylinux.ch/ :

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

lub skrypt wykorzystujący netselect(pobierz stąd , zainstaluj instrukcje tutaj ), jak wyjaśnił Izx bardzo ładnie w tej odpowiedzi :

#!/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
  • Zapisz plik i zamknij go.
  • Wróć do terminala i uruchom: chmod +x ~/bin/change_sources.sh - aby przyznać dostęp do skryptu.
  • Tylko do testu, aby uruchomić nowy skrypt, wpisz terminal ~/bin/change_sources.sh. Daje ci błąd, ponieważ nie masz prawa do edycji /etc/apt/sources.list. Więc użyjsudo ~/bin/change_sources.sh
  • Edytuj plik crontab użytkownika root za pomocą sudo crontab -epolecenia i dodaj następujący wiersz:
@hourly /home/$USER/bin/change_sources.sh  
#change $USER with your user name
  • Ustawiłem pracę crona na każdą godzinę, ale możesz się zmieniać według własnego uznania lub według własnego uznania. Zobacz http://en.wikipedia.org/wiki/Cron w tym sensie.
  • Zapisz plik i sprawdź nowy wpis crontab za pomocą sudo crontab -l.

UWAGA: Aby cofnąć zmiany wprowadzone przez ten skrypt, usuń zadanie cron i postępuj zgodnie ze wskazówkami z powyższego obrazka lub użyj następnego polecenia w terminalu:

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

Odtąd plik będzie dynamicznie zmieniany po znalezieniu zmiany adresu IP.

To może nie być najlepsze rozwiązanie, ale moim zdaniem dobre rozwiązanie można podać w ten sposób, jak w powyższych skryptach .

Radu Rădeanu
źródło
2
Wydaje mi się, że kłóciłbym się, czy gui na Linuksie można kiedykolwiek uznać za tradycyjny sposób. :) Ale tak czy inaczej: Twój pierwszy skrypt rozwiązuje problem, nie mam. Składnia lustrzana już pobiera moje niemieckie kopie lustrzane, amerykańskie lub gdziekolwiek ludzie. Drugi skrypt korzysta z serwerów lustrzanych kraju - wydają się mieć najmniej dostępną przepustowość (widziałem, że na liście archiwów błędów w starterze), trzeci skrypt zakłada, że ​​szybkie (lub najbliższe) lustro jest rzeczywiście najlepsze. Z powrotem do kwadratu. Teraz koduję mały apt-spyskrypt. Zaktualizuje tutaj później.
Do
1
@To twoje pytanie brzmiało: „ Jak radzisz sobie z przestojami? ” I „ Jak mogę pomóc w poprawie tej sytuacji? ”. Pokazałem, jak sobie radzę i zasugerowałem, jak możesz pomóc w ulepszeniu ... Ponadto, jeśli przeczytasz moją odpowiedź do końca, możesz zauważyć, że mam świadomość, że „ To może nie być najlepsze rozwiązanie, ale myślę, że że w ten sposób można podać dobre rozwiązanie, jak w powyższych skryptach ". Wreszcie, jeśli jesteś zainteresowany naprawą / ulepszeniem uszkodzonych serwerów, wydaje się to nie na temat i powinieneś porozmawiać z właścicielami tych serwerów.
Radu Rădeanu,
2
Nie sądzę, że to nie na temat. Różni ludzie z firmy Canonical / Ubuntu powiedzieli mi, żebym dodał tutaj moje pytanie. Właśnie dlatego tu jestem i myślę też, dlaczego przydzielono nagrodę.
Do
1
@ Aż tak, pytanie jest dobre, ale nie w formie przeformułowanej w tych komentarzach. Nikt nie odpowie tutaj na „jak naprawić zepsuty serwer lustrzany”, o ile nie jest administratorem na danym serwerze.
Radu Rădeanu,
1
Nie chcę naprawiać tego serwera, chcę naprawić algorytm wyboru i brak przełączania awaryjnego.
Do
4

Doceniam cały wkład w to pytanie, ale ponieważ nikt nie wymyślił prostego rozwiązania, które pasowałoby do naszych okoliczności, postanowiłem sam rozwiązać problem.

Stworzyłem narzędzie (specjalnie dla Ubuntu), które nazywam apt-spy2.

Głównym celem tego narzędzia jest szybkie znalezienie działającego lustra. Praca jest zdefiniowana przez to, że serwer kopii dystrybucyjnych jest dostępny i (mam nadzieję :) aktualny.

Nie zakładam, czy wybrany serwer jest z konieczności najbliższy i najszybszy. Nie wykonuję żadnych pingów ani sztuczek GEO DNS - ale na razie działa to, gdy coś się psuje.

Jak to działa - w skrócie:

  1. Korzystam z http://mirrors.ubuntu.com lub listy mirrorów starteraDo pobierania serwerów startowych.
  2. Sprawdzam każdy z nich (dla kodu stanu odpowiedzi HTTP).
  3. LBNL, aktualizuję /etc/apt/sources.list.

Uwaga: Zakłada się, że ludzie bawią się ładnie i umieszczają dodatkowe kopie lustrzane (np. Repozytoria stron trzecich /etc/apt/sources.list.d. Myślę jednak, że oznacza to, że jest miejsce na ulepszenia.

Możesz uzyskać to narzędzie w następujący sposób:

$ [sudo] gem install apt-spy2

CLI pochodzi z list, check, fixihelp (z rozszerzonym informacji o tym, jak z niego korzystać).

Próbowałem jak najwięcej udokumentować w README projektu .

Obecna wersja jest bardzo konserwatywna 0.5.0 .

Kod jest open source, a licencja jest liberalna. I biorę wszystkie wkłady.

Do
źródło
Czy przesłałeś to do repozytoriów ubuntu?
Braiam
@Braiam Możesz zdobyć to narzędzie tak: sudo gem install apt-spy2
Radu Rădeanu
@ RaduRădeanu Pytam, czy to załadował, ponieważ jestem zainteresowany pakowaniem czegoś do Debiana.
Braiam
@Braiam Nie pakowałem tego, ale chętnie bym to zrobił, gdyby ktoś to zrobił. :)
Do
@Braiam Btw, jest mało prawdopodobne, aby działał z Debianem. ; (Działa tylko z Ubuntu.
Do
2

W Debianie 6.0.4 pojawiło się to polecenie:

apt-spy

Zadanie polegało na znalezieniu następnego najbliższego dostępnego serwera automatycznie i wygenerowaniu nowej listy sources.list

W Ubuntu to polecenie wydaje się nie istnieć?

Wciąż istnieje w wheezy Debiana 7.0:

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

Możesz pobrać pakiet * .deb tutaj:

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

... wciąż szukam źródeł ...

Oczywiście potrzebujesz Debiana-7.0-Instalacja, aby uzyskać kod źródłowy po edycji listy źródeł z wpisem:

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

Następnie po aktualizacji sudo apt-get wystarczy zasysać kod za pomocą:

sudo apt-get source apt-spy

dschinn1001
źródło
Dzięki za sugestię, apt-spy naprawdę wygląda świetnie. Nie jestem pewien, czy to działa dobrze. Za każdym razem, gdy instalowałem Debiana w Ubuntu, prędzej czy później pękał z powodu innych zależności.
Do
@ Aż - zawsze jest coś z nieco większym kopaniem ... gdy tylko Linux staje się bardziej wymagający.
dschinn1001
@Do Czy masz na myśli: Zbuduj to ...! lub zbudowałeś ...? - Opiekuję się następnym razem - teraz jest pełnia księżyca i jestem oszołomiony ...
Opiekuję się nieszczęśliwy
jesteś szybki !
dschinn1001
2

Może nie korzystasz z rozwiązania, które ci się podoba, ale konfiguracja lokalnej pamięci podręcznej dla plików .deb powinna być idealna, gdy pobierasz kilka MB pakietu (większość z nich założę się, że są takie same), a ponieważ pobierasz z tego samego serwera, może chcieć poświęcić komputer, aby uczynić pamięć podręczną i zmniejszyć obciążenie serwera.

Procedura

Powinieneś być w stanie ustawić apt-cacherna maszynie, która ma dużo miejsca na dysku twardym (będziesz go potrzebować). Możesz to skonfigurować, korzystając z przewodnika serwera Apt-cacher , ale możemy szybko wznowić.

  1. zainstalować apt-cacher

    sudo apt-get install apt-cacher apache2

  2. Edytuj /etc/default/apt-cacheri ustaw autostartwartość na 1, aby pamięć podręczna była uruchamiana po włączeniu zasilania komputera.
  3. Uruchom ponownie apache sudo /etc/init.d/apache2 restart
  4. Przetestuj swoją pamięć podręczną przy użyciu http://ip-of.your.cache:3142/apt-cacher.
  5. Powinieneś zezwolić hostowi na użycie pamięci podręcznej, więc edytuj /etc/apt-cacher/apt-cacher.confi wyszukaj wierszallowed_hosts . Możesz ustawić podsieci takie jak 192.168.0.0/24lub tylko *dla wszystkich hostów
  6. Szukaj szybkiego i niezawodnego serwera . Możesz apt-spydo tego użyć (to polecenie może zająć wiele godzin, ponieważ testuje również prędkość każdego serwera).
  7. U twoich klientów masz dwie opcje:

    • Ustaw sources.list następujący sposób:

    deb http: //ip-of.your.cache: 3142 / the.server.you.like / ubuntu / lucid main limited universe multiverse

    Zmień ip-of.your.cacheadres IP swojej pamięci podręcznej ithe.server.you.like nazwę hosta serwera, którego będziesz używać. Możesz użyć kilku linii.

    • Lub ustaw apt na używanie proxy: edytuj /etc/apt/apt.conf.d/01proxy i dodaj wiersz:

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

Braiam
źródło
Jeśli użyjesz apt-spy na całym świecie, potrwa to
trochę dłużej
@ dschinn1001 -d testingpachnie jak Debian.
Braiam
no więc: apt-spy -a Europe
dschinn1001
„głosować”? - Nie przegłosowałem? - czasami zdarza się, że klikam przypadkowo myszką - nigdy nie celuję w głosowanie w dół! więc głosowałem na ciebie! dzięki.
dschinn1001
1

Możesz spróbować skonfigurować własne lustro Ubuntu. W ten sposób aktualizacje będą lokalne.

apt-mirror potrzebuje szybkiego połączenia z Internetem i dużej ilości miejsca na dysku

Konfigurowanie własnego serwera lustrzanego Ubuntu jest bardzo łatwe przy użyciu apt-mirror.

1) przejdź do repozytorium apt-mirror. Utwórz kopię zapasową pliku sources.list w następujący sposób:

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

2) Edytuj plik sources.list w następujący sposób:

gksudo gedit /etc/apt/sources.list

3) I wstaw następujące w nowym wierszu:

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

4) Zaktualizujmy indeks pakietu

sudo apt-get update

5) I zainstaluj apt-mirror

sudo apt-get install apt-mirror

6) Apt-mirror jest teraz skonfigurowany, więc powiedzmy, jakie serwery do dublowania:

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

Domyślna konfiguracja umieści pobrane pliki w folderze / var / spool / apt-mirror. Oto jak wygląda plik mirror.list:

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

to tylko odzwierciedla pakiety binarne, ale jeśli chcesz pakiety źródłowe, powinieneś wstawić odpowiednie linie. Zwykle mają one postać:

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

7) Teraz biegnij apt-mirror. To zajmie sporo czasu. Nie martw się, jeśli nie możesz pobrać wszystkich plików za jednym razem, apt-mirrormożesz wznowić pobieranie (zabij go kombinacją klawiszy Ctrl+ Ci uruchom ponownie, jeśli chcesz kontynuować). Ok, uruchom apt-mirror tak:

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

Sprawdź także, jak utworzyć lokalne dublowanie Debiana / Ubuntu za pomocą apt-mirror

Źródło: Użyj Apt-mirror, aby stworzyć własne Mirror Ubuntu

Mitch
źródło
Jeśli pamięć dobrze mi służy, apt-mirrorjest dostępna w repozytoriach ubuntu.
Braiam
BTW, pamiętaj o potrzebie dużej ilości miejsca na HD, aby pobrać pełne lustro;)
Braiam
Dzięki za odpowiedź i jest to świetny zasób do konfiguracji lustra. Rozważyłem to, ale potrzebowałbym tego ustawienia w co najmniej 3 różnych lokalizacjach. Wiem, że jestem wybredna, ale nadal uważam, że to mirrors.ubuntu.compowinno zadziałać. :)
Do
@till mirrors.ubuntu.comnigdy nie rozwiąże problemu mirrors.ubuntu.com, ale najbliższy serwer. Problem polega na tym, że serwer, który rozwiązuje, jest zawodny. Lepszą grą jest używanie niezawodnego serwera z oficjalnej listy.
Braiam
@Braiam jakiś pomysł, dlaczego przez to zwracane są niewiarygodne lustra?
Do
1

Napisałem skrypt w języku Python o nazwie apt-select który ma służyć jako alternatywa CLI dla metody GUI.

Skrypt wysyła do każdego lustra zapytanie za pomocą protokołu TCP, drukuje do standardowych serwerów lustrzanych o najniższym opóźnieniu i generuje nowy sources.listplik. Istnieje również wiele opcji, które pozwalają wybierać z listy kopii lustrzanych w rankingu i pobierać informacje, takie jak data ostatniej aktualizacji kopii lustrzanej i jej przepustowość.

John B.
źródło