apt-get 卡在 0 [连接到 us.archive.ubuntu.com]

Ari*_*osh 180 upgrade updates command-line apt 14.04

当我升级时,它会卡在这里:

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)] ?
Run Code Online (Sandbox Code Playgroud)

当我进行更新时,它会卡在这里:

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

我可以 ping 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
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题?


到目前为止我尝试过的。

我在这个博客上尝试了以下说明: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

Ari*_*osh 335

我想出了如何让 apt-get 再次工作。

编辑gai.conf

sudo vim /etc/gai.conf
Run Code Online (Sandbox Code Playgroud)

更改第 ~54 行以取消注释以下内容:

precedence ::ffff:0:0/96  100
Run Code Online (Sandbox Code Playgroud)

写并退出:

:wq
Run Code Online (Sandbox Code Playgroud)

警告

注意看起来几乎相同的第 50 行:

precedence ::ffff:0:0/96  10
Run Code Online (Sandbox Code Playgroud)

这是错误的行。往下走~4行,你会找到正确的行来取消注释,因为它以100而不是结尾10

  • 你到底是怎么想出来的?这突然开始发生在我的一台服务器上,并修复了它。 (58认同)
  • **问题:** ISP 开始设置内部 IPv6 网络,为最终连接到 IPv6 互联网做准备。因此,该网络中的服务器现在在运行 apt-get 时默认尝试通过其 IPv6 地址连接到 *.ubuntu.com。**解决方案:** 取消注释 `precedence ::ffff:0:0/96 100` 允许请求优先使用 IPv4 (58认同)
  • 固定的!这绝对是解决此问题的正确方法。但是对于遇到此修复程序的任何人,请确保您不要做我所做的事情。我取消了`precedence ::ffff:0:0/96 10`的注释,我不得不返回文件并再次注释该行,然后取消注释正确的行,即`precedence ::ffff:0:0/96 100 ` (8认同)
  • 这里发生了什么?小心详细说明为什么此修复程序有效? (4认同)
  • 感谢您发布您的解决方案。我遇到了同样的问题,这解决了它。 (2认同)

Sud*_*ali 17

在更新和升级之前最好禁用 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 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在那之后运行

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6 
    
    Run Code Online (Sandbox Code Playgroud)

    如果它报告'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 
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重复上面的“步骤 3”,它现在将报告 1。


Rob*_*her 9

没有任何 IPv6 修复对我有用。可能我有不同原因的相同症状。我的解决方法是通过在 sources.list 中进行搜索和替换来切换到不同的存档,例如:

sudo vim /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

进而:

:%s/us\.archive/de\.archive/g
:wq
Run Code Online (Sandbox Code Playgroud)

这至少可以让我重新开始工作,直到我找出真正的问题。