apt-get utknął na 0 [Łączenie z us.archive.ubuntu.com]

164

Kiedy dokonam aktualizacji, utknie tutaj:

user@plato:~# sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  bind9-host coreutils cpio curl dnsutils libbind9-90 libc-bin libc-dev-bin
  libc6 libc6-dev libcgmanager0 libcurl3 libcurl3-gnutls libdns100
  libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libisc95 libisccc90
  libisccfg90 libjasper1 liblwres90 libplymouth2 libsepol1 libssl-dev
  libssl-doc libssl1.0.0 linux-libc-dev mime-support multiarch-support ntp
  ntpdate openssl plymouth plymouth-theme-ubuntu-text python3-distupgrade
  ubuntu-release-upgrader-core unzip
39 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.0 MB of archives.
After this operation, 12.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
0% [Connecting to us.archive.ubuntu.com (2001:67c:1562::15)] ░

Kiedy aktualizuję, utknie tutaj:

user@plato:~# apt-get update
0% [Connecting to us.archive.ubuntu.com (2001:67c:1562::14)] [Connecting to sec░

Jestem w stanie pingować us.archive.ubuntu.com:

user@plato:~# ping us.archive.ubuntu.com
PING us.archive.ubuntu.com (91.189.91.23) 56(84) bytes of data.
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=1 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=2 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=3 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=4 ttl=54 time=81.4 ms
^C
--- us.archive.ubuntu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 81.425/81.528/81.582/0.355 ms

Co mogę zrobić, aby to naprawić?


Co próbowałem do tej pory.

Próbowałem następujące wskazówki na tym blogu: http://nickescobedo.com/719/ubuntu-apt-get-hangs-at-0

Aby zmusić apt-get do używania wyłącznie IPv4

  • Utwórz plik w /etc/apt/apt.conf.d/99force-ipv4
  • Dodaj ten wiersz do nowo utworzonego pliku Acquire::ForceIPv4 false;
  • Apt-get będzie teraz używać wyłącznie IPv4
Arian Faurtosh
źródło
Żadna z odpowiedzi nie działała dla mnie: moim problemem była zapora hosta systemu Windows blokująca mojego gościa Ubuntu działającego w Virtualbox.
drodsou
Żadna z tych odpowiedzi nie działała dla mnie. Zrestartowałem maszynę wirtualną i teraz działa.
kilodżule,

Odpowiedzi:

309

Wymyśliłem, jak znów zacząć działać.

Edytuj gai.conf:

sudo vim /etc/gai.conf

zmień wiersz ~ 54, aby odkomentować:

precedence ::ffff:0:0/96  100

napisz i wyjdź:

:wq

UWAGA

Uważaj na linię 50, która wygląda prawie identycznie:

precedence ::ffff:0:0/96  10

To jest zła linia. Zejdź ~ 4 linie w dół, a znajdziesz właściwą linię do odkomentowania, ponieważ kończy się na 100zamiast10

Arian Faurtosh
źródło
1
Dziękujemy za opublikowanie rozwiązania. Miałem ten sam problem i to rozwiązało.
bradym
55
Jak do diabła to rozgryzłeś? To nagle zaczęło mi się dziać na jednym z moich serwerów i to naprawiło.
Brian Neal
4
Co tu się dzieje? Chcesz wyjaśnić, dlaczego ta poprawka działa?
four43
53
Problem: dostawcy usług internetowych zaczynają konfigurować wewnętrzną sieć IPv6 w ramach przygotowań do ewentualnego połączenia z Internetem IPv6. W rezultacie serwery w tej sieci próbują teraz domyślnie łączyć się z * .ubuntu.com za pomocą adresu IPv6 podczas uruchamiania apt-get. Rozwiązanie: odkomentowanie precedence ::ffff:0:0/96 100pozwala żądaniom preferować IPv4
Arian Faurtosh
8
NAPRAWIONY! Jest to zdecydowanie odpowiednia poprawka dla tego problemu. Ale dla każdego, kto napotka tę poprawkę, upewnij się, że NIE robisz tego, co zrobiłem. Odkomentowałem precedence ::ffff:0:0/96 10i musiałem wrócić do pliku i ponownie skomentować ten wiersz, a następnie odkomentować poprawną linię, która jestprecedence ::ffff:0:0/96 100
dtigue
14

Lepiej wyłączyć IPV6 przed aktualizacją i aktualizacją.

  1. Otwórz terminal

  2. Wprowadź sudo -H gedit /etc/sysctl.confi otwórz plik konfiguracyjny i dodaj następujące wiersze na końcu

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  3. Po tym biegu

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6 
    

    Jeśli zgłasza „1” oznacza, że ​​wyłączyłeś IPV6.

    Jeśli zgłasza „0”, wykonaj kroki 4 i 5.

  4. Wpisz polecenie sudo sysctl -p. Zobaczysz to w terminalu.

    net.ipv6.conf.all.disable_ipv6 = 1 
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  5. Powtórz powyżej „Krok 3”, a teraz zgłosi 1.

Sudhir Belagali
źródło
zadziałało. nie rozumiem dlaczego. Czy możesz wyjaśnić, proszę.
AAI
6

Żadna z poprawek IPv6 nie działała dla mnie. Być może mam ten sam objaw z inną przyczyną. Moim obejściem było przejście do innego archiwum poprzez wyszukiwanie i zastąpienie w pliku sources.list, np .:

sudo vim /etc/apt/sources.list

I wtedy:

:%s/us\.archive/de\.archive/g
:wq

To przynajmniej pozwala mi wrócić do pracy, dopóki nie znajdę prawdziwego problemu.

Rob Fisher
źródło
1

To, co zadziałało, to zmiana ustawień sieci VirtualBox dla mojego gościa Ubuntu na „NAT” z „Bridged Adapter”.

użytkownik994165
źródło
Tak, to na pewno zadziała. Ale dlaczego nie działa w przypadku „Bridged Adapter”. Jestem w stanie zrobić wszystko z „Bridged Adapter” oprócz apt-get update.
soufrk 13.03.18