Jak skrócić czas oczekiwania na aktualizacje repozytorium

32

Kiedy robię aptitude update/ apt-get updatelub używam Menedżera aktualizacji do aktualizacji, czasami dochodzę do łącza repozytorium, które trwa zbyt długo. Procent nie kończy się i zanim go zignoruje, zajmuje sporo czasu.

Jak mogę skrócić czas, aby jeśli dane repozytorium trwało dłużej niż 10 sekund, aby je połączyć lub zakończyć, zignoruj ​​je i przenieś następujące. Oto obraz wyjaśniający problem:

wprowadź opis zdjęcia tutaj

Próbuje połączyć się z archive.ubuntu.com, ale ponieważ trwa to zbyt długo, po prostu siedzi tam przez co najmniej 3 do 5 minut (nie mierzyłem czasu), a następnie wyświetla się jako zignorowany i przechodzi do następujących. Chcę to zmienić na sekundy zamiast minut.

Luis Alvarado
źródło
Spróbuj użyć innego lustra. Domyślne z każdego powodu często nie są najszybsze. Na przykład domyślny serwer lustrzany w Chinach zawsze kazał mi czekać 5-15 minut na aktualizację moich repozytoriów. Zmieniłem go na szybszy, a teraz zajmuje to około 30 sekund.
adempewolff
1
@adempewolff Czy byłbyś w stanie / chciałbyś napisać odpowiedź zawierającą informacje zawarte w tym komentarzu, a także pokazać (w tym zarówno opis, jak i obraz), jak zmienić kopię lustrzaną w źródłach oprogramowania?
Eliah Kagan

Odpowiedzi:

38

Jak mogę skrócić ten czas, aby jeśli dane repozytorium trwało dłużej niż 10 sekund, aby je połączyć lub zakończyć, zignoruj ​​je i przenieś kolejne?

Lustra są jedną z opcji, jak wyjaśnił @adempewolff. Pozwolę sobie jednak udzielić bezpośredniej odpowiedzi:

Ustawianie limitów czasu połączenia apt-get

Możesz kontrolować te limity czasu za pomocą następujących apt.confopcji:

  Uzyskaj :: http :: Limit czasu „10”;
  Acquire :: ftp :: Timeout „10”;
  

Należy pamiętać, że dotyczy to tylko limitów czasu połączenia, a NIE limitów czasu zakończenia, tj. Jeśli łączy się w ciągu 10 sekund, nadal pobierze pakiet 100 MB, nawet jeśli ma prędkość 1 KB / sekundę :)

Aby wdrożyć te opcje, po prostu utwórz plik conf w /etc/apt/apt.conf.d; przypuśćmy, że to nazywamy 99timeout.

  • Naciśnij Alt+F2, wpiszgksudo gedit /etc/apt/apt.conf.d/99timeout
  • Wpisz / wklej powyższe linie, z wybranym limitem czasu w sekundach
  • Zapisz i wyjdź.
  • Spróbuj teraz sudo apt-get update

I hack „znajdź najlepszy serwer” uzależnionego od terminalu!

Rozszerzony i przeniesiony jako odpowiedź na to bardziej odpowiednie pytanie


Dodatkowe opcje apt-get conf, które możesz spróbować ulepszyć

  • Acquire::Queue-Mode: Tryb kolejkowania; Tryb kolejki może być jednym hostlub accessktóry określa, w jaki sposób APT zrównolegla połączenia wychodzące. hostoznacza, że ​​jedno połączenie na hosta docelowego zostanie otwarte, accessoznacza, że ​​jedno połączenie na typ URI zostanie otwarte.

  • Acquire::Retries: Liczba ponownych prób do wykonania. Jeśli ta wartość nie jest równa zero, APT spróbuje powtórzyć nieudane pliki określoną liczbę razy.

  • Acquire::http::Dl-Limit: akceptuje wartości całkowite w kilobajtach, aby ograniczyć prędkość pobierania i nie spowalniać przeglądania / e-mail / itp. podczas aktualizacji. Wartością domyślną jest 0, która dezaktywuje limit i próbuje wykorzystać jak najwięcej przepustowości. Jeśli jest włączony, wyłączy apt-getfunkcję równoległego pobierania.

  • Przekop się, man apt.confjeśli uważasz, że coś innego może pomóc!

ish
źródło
1
Czy istnieje sposób na wdrożenie limitu czasu „zakończenia”? Wiem, że w moim przypadku (i zgaduję w przypadku OP, ponieważ wspomina on, że procent bierze zawsze, sugerując, że jest już połączony), zwykle nie jest to kwestia przekroczenia limitu czasu połączenia, to po prostu problem, że połączenie jest niezwykle powolne ( jak 1 kb / s powoli).
adempewolff
Chciałbym dać ci +2 za drugą część; Zastanawiałem się, jak przez długi czas testować najszybsze serwery z terminala.
adempewolff
Dzięki @adempewolff, tak naprawdę chcę napisać / zmodyfikować coś netselect-aptw stylu Ubuntu, aby wszystko było w pliku wykonywalnym. Jeśli chodzi o pytanie dotyczące czasu ukończenia, nie sądzę, aby istniał sposób na poziomie apt-conf. Ale man apt.confi zobacz „The Acquire Group”, w szczególności Tryb kolejki i Ponów, które mogą być pomocne.
ish
Zgodziłem się, ale za „Najlepszy hack serwera” dałem Ci +1 w tej drugiej odpowiedzi i tej. To jest bardzo mądre.
Luis Alvarado
5

Często niektóre repozytoria ładujące się boleśnie powoli są tylko objawem używania powolnego lustra. Domyślne kopie lustrzane w wielu regionach nie są najszybsze (wiem, że tak jest w Chinach).

Zmiana lustra jest naprawdę łatwa w GUI źródeł oprogramowania. Możesz otworzyć to okno na dwa sposoby:

  1. Otwórz Ubuntu Software Centeri kliknij Software Sourcesw Editmenu.

lub

  1. Otwórz terminal (lub typ alt-F2) i uruchomsoftware-properties-gtk

Kiedy pojawi się to okno, zobaczysz rozwijane menu z informacją, Download From:że wybiera twoje lustro. Wybierz Otheropcję z tego menu.

źródła oprogramowania

W nowym oknie, które się pojawi, kliknij Select Best Serverprzycisk, a to przetestuje i automatycznie wybierze najszybszy serwer dla Twojej lokalizacji.

wybierz najlepszy serwer

Mam nadzieję że to pomoże!

Zobacz też:

adempewolff
źródło
Hmmm, nie mogę uzyskać zrzutu ekranu, aby uchwycić rozwijane menu w akcji. Nie wiem, czy chcę o to zapytać, czy zgłosić błąd ...
adempewolff
Innym możliwym błędem, który mogę zgłosić, jest to, że software-properties-gtkprogram pojawiał się w desce rozdzielczej Unity podczas pisania Software Sources, ale już nie robi ...
adempewolff
Dobra odpowiedź adempewolff. To byłby pierwszy krok. Jeśli to nie zadziała, rozwiązaniem będzie zaakceptowana odpowiedź. +1 dzięki.
Luis Alvarado
2

apt-fast działa jak apt-get , ale pobiera aktualizacje repozytorium i pakiety równolegle. Zobacz ten samouczek, aby dowiedzieć się, jak go używać.

tslocum
źródło