apt-get 更新卡住:连接到 security.ubuntu.com

Pab*_*abi 87 ipv6 apt networking 15.04

当我apt-get update在我的机器上运行时,它卡在:

100% [Connecting to security.ubuntu.com (2001:67c:1562::15)] [Connecting to archive.canonical.com (2001:67c:1360:8c01::16)]
Run Code Online (Sandbox Code Playgroud)

我最近没有对系统进行任何更改,并使用以前运行良好的家庭网络。

我无法解释为什么它切换到使用 IPv6。
ignore为无线网络设置了 IPv6 :

在此处输入图片说明

的输出ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: mlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 4c:0b:be:22:0a:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.106/24 brd 192.168.2.255 scope global dynamic mlan0
   valid_lft 1814086sec preferred_lft 1814086sec
inet6 ::d5:b551:28db:2789:225/64 scope global temporary dynamic 
   valid_lft 604483sec preferred_lft 85483sec
inet6 ::d5:4e0b:beff:fe22:ab4/64 scope global mngtmpaddr dynamic 
   valid_lft 604779sec preferred_lft 86379sec
inet6 fe80::4e0b:beff:fe22:ab4/64 scope link 
   valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

bil*_*oah 195

这对我有用,由 Zach Adams 提供(https://zach-adams.com/2015/01/apt-get-cant-connect-to-security-ubuntu-fix/):

原来这是一个问题,在某些服务器上通过 IPv6 连接会导致它们在这一点上卡住。修复非常简单。

打开/etc/gai.conf

线下

# For sites which prefer IPv4 connections change the last line to
Run Code Online (Sandbox Code Playgroud)

通过删除以下行取消注释#

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

这将允许您仍然使用 IPv6,但将 IPv4 设置为优先级,以便 apt-get 不会卡住。

  • 谢谢!这个答案比仅仅盲目禁用ipv6要好得多。 (21认同)
  • 注意:这在 14.04 和 16.04 LTS 版本上仍然有效 (4认同)
  • 如果您对此不走运,请尝试:http://askubuntu.com/a/759540/4246 (2认同)
  • 天哪,帮了大忙! (2认同)
  • 在 Linux Mint 18.1 和 18.2 上为我工作。这应该是默认的。 (2认同)

Pab*_*abi 26

网络的 IPv6 设置被忽略,但通过以下方式禁用 IPv6 /etc/sysctl.conf

在底部添加以下几行/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)

运行sudo sysctl -p以重新加载/etc/sysctl.conf设置。

  • 这不是你应该做的。这些线路意味着一旦您连接到实际具有 IPv6 的网络,您将获得比预期更不可靠的连接。此外,这些行无法解决您甚至尚未确定的问题的根本原因。 (6认同)
  • 这很愚蠢,因为对于连接到同一网段上的主机,与 IPv4 相比,IPv6 链路本地地址具有多种优势。 (4认同)
  • 做你想做的事。我只是发表评论以确保可能遇到相同问题的任何其他人都知道对“sysctl.conf”进行建议的更改最终会导致问题。 (4认同)
  • 我不需要任何地方的 IPv6,所以这工作得很好。 (2认同)
  • 不能通过我的手机做到这一点 ;) 让我们同意我们不同意。 (2认同)

小智 20

更好的方法是使用 apt-get 如下,而不是编辑 gai.conf 文件。

sudo apt-get -o Acquire::ForceIPv4=true update
Run Code Online (Sandbox Code Playgroud)

如果你想让这个持久化,只需在你的 bash 文件中为 'apt-get' 添加一个别名。