apt-get update / install中的超时错误

我正在尝试进行apt-get updateapt-get install xyz ,我看到这样的超时:

 W: Failed to fetch http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/dists/oneiric-updates/Release.gpg Unable to connect to eu-west-1.ec2.archive.ubuntu.com:http: [IP: 10.224.87.159 80] 

这是Ubuntu的一个短暂问题,或者它可能是我的结果。 我正在访问它的盒子是EC2-EU。

也许有办法迫使安装程序使用似乎有用的美国服务器?

首先,我假设超时是该区域中Ubuntu更新服务器的一个短暂问题。

应该注意的是,EC2 Ubuntu AMI指向更新您正在使用的EC2区域上托管的服务器。 速度很快(~10Mbps),您无需支付带宽费用。

话虽如此,没有任何关于从何处获取更新的强制执行。 您可以将/etc/apt/sources.list更改为指向其他区域中的不同更新服务器。 解决方法的两个建议:

  • 将来自美国地区的sources.list复制到您的EU主机。
  • sources.list下行添加到sources.list的顶部:
    deb mirror://mirrors.ubuntu.com/mirrors.txt oneiric main restricted universe multiverse

第二个解决方案的优点在于,这个“mirrors.txt”文件是通过GeoIP动态生成的,应该始终返回一个良好且相对接近的镜像。 这对于我们经常旅行的Ubuntu用户来说非常棒

同样,鉴于EC2上存档服务器的特殊性,我通常不会在云实例上执行此操作。 我只会将这些变通办法中的任何一种作为临时措施。 这个问题无论在哪里都是暂时的,我希望它能够很快得到解决。

当我将弹性IP分配为启动实例的元数据的一部分时,我看到了与cloud-init进程类似的行为。

奇怪的是,当cloud-init运行时,我只看到零星的超时时间约30秒。 我正在使用netcat进行测试,netcat每2秒运行一次,作为cloud-init的一部分。 我每隔几次就会获得一次nc超时,然后它会稳定下来。 DNS似乎每次都有效,偶尔会给我一个不同的IP(正如预期的那样)。

我怀疑在AWS基础设施中使用弹性IP分配,但我不确定。

另一个有趣的部分是我在AWS账户中与本地仓库的http连接工作正常,并且对security.ubuntu.com的调用(我相信AWS的外部)也可以正常工作。 到目前为止,我只收集了大约15个样本。 我确实知道当netcat无法归档.ubuntu.com时,它会在其他地方取得成功

来自我在cloud-init中的脚本:

 us-east-1.ec2.archive.ubuntu.com is an alias for us-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com. us-east-1.ec2.archive.ubuntu.com.s3.amazonaws.com is an alias for s3-1-w.amazonaws.com. s3-1-w.amazonaws.com has address 205.251.242.197 nc: connect to us-east-1.ec2.archive.ubuntu.com port 80 (tcp) timed out: Operation now in progress Connection to {myawsserver}.ec2.{somedomain} 80 port [tcp/http] succeeded! Connection to security.ubuntu.com 80 port [tcp/http] succeeded!