Amazon EC2实例无法更新或使用yum

时间:2013-12-29 04:01:56

标签: amazon-web-services amazon-ec2 yum

我正在使用亚马逊的installing a LAMP server教程。前几条指令涉及使用yum,但我尝试过的每一种方式都会产生相同的消息。我最近发现了一些关于同一问题的问题,但没有一个问题会改变我的设置。

以下是信息:

Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.us-east-1.amazonaws.com/latest/main/mirror.list error was
12: Timeout on http://repo.us-east-1.amazonaws.com/latest/main/mirror.list: (28, 'Connection timed out after 10001 milliseconds')


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

 1. Contact the upstream for the repository and get them to fix the problem.

 2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

 3. Disable the repository, so yum won't use it by default. Yum will then
    just ignore the repository until you permanently enable it again or use
    --enablerepo for temporary usage:

        yum-config-manager --disable <repoid>

 4. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

        yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

 Cannot find a valid baseurl for repo: amzn-main/latest

我之前做过同样的事情,没有遇到任何问题,使用相同的教程,但是几个月前。我不知道发生了什么变化,但我微薄的经历让我无法搞清楚。

21 个答案:

答案 0 :(得分:36)

看起来主机在联系yum服务器时遇到问题。确保实例具有出站Internet访问权限(检查安全组等)。如果实例位于VPC中并且安全组看起来很好,则可能需要使用nat设备或附加弹性IP。

祝你好运 -

答案 1 :(得分:15)

如果您的VPC上有S3端点,那么这将导致yum失败,因为repo文件存储在S3中。要解决此问题,请将以下策略添加到S3:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "*",
        "Resource": [
            "arn:aws:s3:::repo.eu-west-1.amazonaws.com",
            "arn:aws:s3:::repo.eu-west-1.amazonaws.com/*"
        ]
    }
]
}

将eu-west-1替换为S3端点所在的相关区域代码。

答案 2 :(得分:8)

Amazon EC2的许多首次使用者遇到此问题。根据我的经验,通常是不在其实例的安全组上设置允许的传出连接的结果。亚马逊用于配置Amazon Linux实例的教程仅提及设置传入连接,因此很容易忘记您从未设置允许的传出连接。简单地允许HTTPHTTPS请求任何IP地址都可以解决问题。

答案 3 :(得分:4)

我遇到了同样的问题,并且与名称解析有关。我使用以下内容来纠正:

EC2 instance has no public DNS

这是Mat的好解释:

  • 转到console.aws.amazon.com
  • 转到服务 - &gt; VPC
  • 打开您的VPC
  • 选择您的VPC 连接到您的EC2和
  • 修改摘要---&gt;将DNS主机名更改为:是

答案 4 :(得分:1)

转到为其配置 EC2 的安全组。 并验证其入站规则中的以下字段。如果这些下面的字段不存在,则通过单击按钮编辑入站规则来添加它。

  1. 类型-:所有流量
  2. 协议-:所有
  3. 端口范围-:全部
  4. 目的地-:0.0.0.0/0

希望这能解决问题。

答案 5 :(得分:1)

已加载的插件:优先级,update-motd,upgrade-helper 无法检索镜像列表http://repo.us-east-1.amazonaws.com/latest/main/mirror.list,错误为 12:http://repo.us-east-1.amazonaws.com/latest/main/mirror.list上的超时:(28,“连接在10001毫秒后超时”)

其中一个已配置的存储库发生故障(未知), 并且yum没有足够的缓存数据来继续。在这一点上唯一 yum可以做的安全的事情是失败。有几种方法可以“解决”此问题:

  1. 与上游联系以获取存储库,并让他们解决问题。

  2. 重新配置baseurl / etc。对于存储库,指向工作中的 上游。如果您使用的是较新的版本,这通常非常有用 发行版本超出了存储库支持的版本(以及 以前的发行版本的软件包仍然有效。

  3. 禁用存储库,因此yum默认不会使用它。百胜会 只需忽略存储库,直到再次永久启用它或使用 --enablerepo临时使用:

    yum-config-manager --disable <repoid>
    
  4. 配置要跳过的失败存储库(如果不可用)。 请注意,yum会尝试联系仓库。当它运行大多数命令时, 因此每次都必须尝试失败(因此,yum将会非常多 慢点)。如果这是一个非常临时的问题,通常这是一个很好的选择 妥协:

    yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
    

找不到用于回购的有效基本URL:amzn-main / latest

从上周开始我也遇到了同样的错误,几乎可以尝试所有操作,但无法安装服务器并无法启动httpd服务。

通过仅允许进出安全组和NACL的所有流量进/出解决了该问题...请尝试对其进行严格解决。

答案 6 :(得分:1)

随着chadneal的评论。 有必要将 DNS解析设置为

  • 转到console.aws.amazon.com
  • 转到服务 - &gt; VPC
  • 打开您的VPC
  • 选择您的VPC 连接到您的EC2
  • 点击修改DNS解析并将其设置为

答案 7 :(得分:0)

我正在获得与问题中描述的yum相同的错误消息。在我的情况下,我有一个NACL允许所有传出流量但限制传入流量到HTTP / HTTPS,SSH和所有ICMP。由于NACLS是无状态尝试运行yum失败,因为yum使用的传入短暂连接未明确允许并因此被删除。

答案 8 :(得分:0)

我遇到了同样的问题,但问题不在于我的安全组或NACL。

背景: 我通过Route53添加了一个域名。 域名继续由DiscountASP.net托管。 VPC是手动创建的(无向导或默认)。 我创建了一个DHCP选项集,其中包含我的域名和Route53给我的4个服务器IP地址。

分析: 首先,我需要证明问题不是安全组或NACL。 我通过将默认的DHCP选项集连接到我的新VPC来完成此操作。有效! 我可以做yum更新和&#34; curl http://www.google.com&#34;。没问题。

然后,我使用我的域名和Google DNS服务器创建了一个新的DHCP选项集。 8.8.8.8&amp; 8.8.4.4 这也有效。

然后,我接受了Route 53提供的4个DNS服务器IP中的一个,并将其与我的域名一起用于新的DHCP选项集。 我跑了一个测试但失败了。我使用其余4个DNS服务器IP中的2个重复相同的测试,创建两个单独的DHCP选项集。 我跑了测试,他们都失败了。

在检查我的域名拼写后,我只能得出结论,问题是域名服务器。

解决方案: 亚马逊虚拟私有云用户指南(PDF第222页) 亚马逊DNS服务器(子主题)

&#34;当您创建VPC时,我们会自动创建一组DHCP选项并将它们与VPC相关联。此集包括两个选项:domain-name-servers = AmazonProvidedDNS,domain-name = domainname-for-your-region。 AmazonProvidedDNS 是亚马逊DNS服务器,此选项启用DNS 对于需要通过VPC的Internet网关进行通信的实例。字符串AmazonProvidedDNS映射到运行在VPC IPv4网络范围基础上的保留IP地址的DNS服务器,再加上两个。例如,10.0.0.0 / 16网络上的DNS服务器位于10.0.0.2。&#34;

从第221页开始: DHCP:域名服务器

选项名称说明 &#34;最多四个域名服务器的IP地址,或 AmazonProvidedDNS 。默认的DHCP选项集指定AmazonProvidedDNS。如果指定多个域名服务器,请用逗号分隔。&#34;

其引用的IP地址适用于外部域名服务器(不包括您创建自定义DNS的可能性)。

所以我使用我的域名和domain-name-servers = AmazonProvidedDNS 创建了我的最终DHCP选项集。有效! 顺便说一句,VPC DNS Resolution = yes&amp; DNS主机名=否。

答案 9 :(得分:0)

安全组和NACL都可能出现此问题。就我而言,我发现即使修改了安全组,更新也会失败。但是,当NACL被修改时......更新成功

答案 10 :(得分:0)

我遇到了同样的问题,结果是另一个系统管理员决定通过代理路由出站互联网流量。我发现这是通过注意到一些疲惫的代理环境设置,挖得更深一些,然后在我的/etc/yum.conf文件中注意到了一个条目。

注释掉proxy =行,然后再次工作。

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
#proxy=http://pos-proxy-in-my-way-of-doing-actual-real-work:666

答案 11 :(得分:0)

我使用sudo运行以下命令(如果你不是root用户,不能单独使用yum)并修复了问题。

yum-config-manager --save --setopt=dev.mysql.com_downloads_repo_yum_.skip_if_unavailable=true

答案 12 :(得分:0)

我遇到了同样的问题。在我的情况下,我错误地删除了我的安全组的出站规则。添加出站规则以允许所有流量解决问题。

答案 13 :(得分:0)

请按照以下步骤操作

步骤1:转到 AWS-VPC

第2步:找到 DHCP选项

第3步:如果没有任何 DHCP 选项,请创建一个新的 DHCP

第4步:添加域名= ap-south-1.compute.internal(如果您使用其他区域,请使用其他区域名称)

第5步:添加域名服务器= AmazonProvidedDNS

步骤6:然后选择 VPC -> 操作-> 编辑DHCP选项集-> 选择您刚创建的DHCP集-> 保存

步骤7:然后重新启动实例

第8步:登录您的实例,然后只需键入yum list installed->它将彻底为您提供已安装物品的列表

  

谢谢

答案 14 :(得分:0)

不要担心这是简单的错误。 这也不是连接互联网。

仅使用vi编辑器创建新文件:

dtFromDate = Convert.ToDateTime(DateTime.ParseExact(fromDate, "dd/MM/yyyy", CultureInfo.InvariantCulture) .ToString("MM/dd/yyyy", CultureInfo.InvariantCulture));

vi /etc/resolv.conf

,然后键入以下内容退出vi: nameserver 8.8.8.8 nameserver 8.8.4.4

答案 15 :(得分:0)

检查是否从分配的安全组中删除/修改了您的出站条目。通常,出站条目设置为“所有流量”并允许任何IP。

就我而言,出站已删除。我再次将其设置为“所有流量”,并且可以使用。

答案 16 :(得分:0)

我正在使用默认的VPC,并且默认情况下启用了DNS主机解析;不是我的问题。我按照建议添加了默认安全组,从而解决了我的问题。

答案 17 :(得分:0)

此外,如果您无法使任何DNS工作,请检查您的DHCP选项集。我留下了一个旧的,当我清理了涉及活动目录集成的项目时,它就破了。答案只是改回原始/保存的选项。

答案 18 :(得分:0)

如果在子网中使用了NACL,则位于EC2。


快速修复

您将为此yum update打开入站 Ephemeral ports

例如,在下面添加#100 入站规则:

enter image description here

请注意,即使出站规则允许所有流量,这仍然是必要的:

enter image description here

为什么必须这样做?

  1. yum80/443之类的端口上打开出站连接时,它会从随机的高端口(星历端口)返回。

  2. 网络ACL是无状态的(与安全组不同),默认情况下将不允许在同一端口上返回连接。


您可以在here中阅读更多内容。

答案 19 :(得分:0)

您的 vpc 中的 ACL 与实例入站或出站规则不同。我看到 vpc 的 acl 每天都有人多次。

答案 20 :(得分:-1)

嗨!这是我找到的完美答案

转到出站规则添加

所有流量

就这样