16.04 apt-get 更新挂起

alf*_*alf 6 updates apt

apt-get update 和 upgrade 都挂起:

sudo apt-get update
[sudo] password for xxx: 
0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::17)]
Run Code Online (Sandbox Code Playgroud)

我可以 ping archive.ubuntu.com:

ping archive.ubuntu.com
PING archive.ubuntu.com (91.189.88.162) 56(84) bytes of data.
64 bytes from yukinko.canonical.com (91.189.88.162): icmp_seq=1 ttl=50 time=42.2 ms
64 bytes from yukinko.canonical.com (91.189.88.162): icmp_seq=2 ttl=50 time=42.1 ms
64 bytes from yukinko.canonical.com (91.189.88.162): icmp_seq=3 ttl=50 time=42.1 ms
^C
--- archive.ubuntu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 42.169/42.206/42.265/0.240 ms
Run Code Online (Sandbox Code Playgroud)

我检查了这个问题,我认为这不是同一个问题。

任何进一步调查的提示?

Rav*_*ina 7

从你的输出来看,我认为这是一个IPv6问题,所以我们应该强制apt使用IPv4

如果我们搜索apt.conf (5)手册,IPv4我们会发现:

ForceIPv4:
下载时,强制只使用IPv4协议。

要启用此选项,我们应该在以下位置创建一个文件:

/etc/apt/apt.conf.d/
Run Code Online (Sandbox Code Playgroud)

名称可以是我们使用的任何相关内容99force-ipv4,数字是此目录中配置文件的优先级。

然后将以下命令添加到此文件并保存:

Acquire::ForceIPv4 "true";
Run Code Online (Sandbox Code Playgroud)

然后再次尝试更新您的来源:

sudo apt update
Run Code Online (Sandbox Code Playgroud)

不确定问题的原因,但是我认为您的大学正在运行内部IPv6网络;所以apt试图连接IPv6到它的镜像,可能会有一些不兼容。我只是尝试强制apt使用IPv4并且它起作用了。

简短说明:

我们也可以使用echotee用一个命令(从这里)写下这个配置:

echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
Run Code Online (Sandbox Code Playgroud)