apt-застрять в 0 [Соединение с us.archive.ubuntu.com]


163

Когда я делаю обновление, он застревает здесь:

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)] ░

Когда я делаю обновление, он застревает здесь:

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

Я могу нормально пропинговать 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

Что я могу сделать, чтобы это исправить?


Что я пробовал до сих пор.

Я попробовал следующие указания в этом блоге: http://nickescobedo.com/719/ubuntu-apt-get-hangs-at-0

Чтобы заставить apt-get использовать исключительно IPv4

  • Создать файл в /etc/apt/apt.conf.d/99force-ipv4
  • Добавить эту строку во вновь созданный файл Acquire::ForceIPv4 false;
  • Apt-get теперь будет использовать исключительно IPv4

Ни один из ответов не помог мне: моя проблема заключалась в том, что мой брандмауэр Windows блокировал мой гостевой Ubuntu, работающий в Virtualbox.
drodsou

Ни один из этих ответов не работал для меня. Я перезапустил свою виртуальную машину, и теперь она работает.
килоджоулей

Ответы:


309

Я разобрался, как заставить работать снова.

Редактировать gai.conf:

sudo vim /etc/gai.conf

измените строку ~ 54, чтобы раскомментировать следующее:

precedence ::ffff:0:0/96  100

написать и выйти:

:wq

ВНИМАНИЕ

Посмотрите на строку 50, которая выглядит практически идентично:

precedence ::ffff:0:0/96  10

Это неправильная линия. Пройдите на ~ 4 строки вниз, и вы найдете правильную строку для комментария, потому что она заканчивается 100вместо10


1
Спасибо за размещение вашего решения. У меня была та же самая проблема, и это исправило это.
брадим

55
Как на земле вы поняли это? Это внезапно начало происходить со мной на одном из моих серверов, и это исправило это.
Брайан Нил

4
Что здесь происходит? Хотите уточнить, почему это исправление работает?
4:43

53
Проблема: интернет-провайдеры начинают настройку внутренней сети IPv6 для подготовки к последующему подключению к Интернету IPv6. В результате серверы в этой сети теперь пытаются подключиться к * .ubuntu.com через его адрес IPv6 по умолчанию при запуске apt-get. Решение: раскомментирование precedence ::ffff:0:0/96 100разрешает запросы предпочитать IPv4
Ариан Фауртош

8
ИСПРАВЛЕНО! Это определенно правильное решение для этой проблемы. Но для тех, кто сталкивается с этим исправлением, убедитесь, что вы НЕ делаете то, что я сделал. Я раскомментировал, precedence ::ffff:0:0/96 10и мне пришлось вернуться в файл и снова прокомментировать эту строку, а затем раскомментировать правильную строку, котораяprecedence ::ffff:0:0/96 100
dtigue

14

Лучше отключить IPV6 перед обновлением и обновлением.

  1. Открытый терминал

  2. Введите sudo -H gedit /etc/sysctl.confи откройте файл конфигурации и добавьте следующие строки в конце

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  3. После этого запуска

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

    Если он сообщает «1», значит, вы отключили IPV6.

    Если он сообщает «0», пожалуйста, следуйте шагам 4 и 5.

  4. Введите команду sudo sysctl -p. Вы увидите это в терминале.

    net.ipv6.conf.all.disable_ipv6 = 1 
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  5. Повторите выше «Шаг 3», и теперь он сообщит 1.


это сработало. Я не понял почему. Объясните пожалуйста.
AAI

6

Ни одно из исправлений IPv6 не сработало для меня. Возможно, у меня тот же симптом с другой причиной. Мой обходной путь - переключиться на другой архив, выполнив поиск и замену в sources.list, например:

sudo vim /etc/apt/sources.list

А потом:

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

Это, по крайней мере, позволяет мне вернуться к работе, пока я не выясню реальную проблему.


1

Что мне помогло, так это переключить мои настройки сети VirtualBox для моего гостя Ubuntu на «NAT» с «Bridged Adapter».


Да, это обязательно сработает. Но почему он не работает над «Мостовым адаптером». Я могу делать все с помощью «Мостового адаптера», кроме apt-get update.
soufrk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.