【问题标题】:Not able to update EC2 Linux instance with command 'sudo yum update'无法使用命令“sudo yum update”更新 EC2 Linux 实例
【发布时间】:2020-06-11 09:36:09
【问题描述】:

当我尝试更新 EC2 Amazon Linux 实例时,我收到以下错误:

加载的插件:extras_suggestions、langpacks、priorities、update-motd 无法检索镜像列表 http://amazonlinux.ap-south-1.amazonaws.com/2/core /latest/x86_64/mirror.list 错误是 12:http://amazonlinux.ap-south-1.amazonaws.com/2/core/latest/x86_64/mirror.list 上的超时:(28,'连接在 5000 毫秒后超时')

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

 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. Run the command with the repository temporarily disabled
        yum --disablerepo=<repoid> ...

 4. Disable the repository permanently, 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>
    or
        subscription-manager repos --disable=<repoid>

 5. 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

找不到 repo 的有效 baseurl:amzn2-core/2/x86_64

任何帮助将不胜感激。

【问题讨论】:

  • EC2 实例是否在公有子网中(连接到 Internet 网关)?超时表明它没有与 Internet 的网络连接。

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


【解决方案1】:

您可能在一个私有子网中(即一个没有 0.0.0.0/0 路由到外部世界的子网)。 如果您想连接到外部世界,您需要一个位于公共子网中的 NAT 网关,该网关具有到 Internet 网关的路由。

EC2 -> NAT -> IGW

这是我找到的最好的AWS troubleshooting page(2021 年初) 如果您不想连接到外部世界,您需要一个VPC endpoint,它允许从私有子网连接到特定的 AWS 服务。我从来没有让这个工作。

【讨论】:

    【解决方案2】:

    您的实例无法访问互联网。 您可以通过以下方式解决此问题:

    1. 如果您的实例在公有子网中运行,请确保它附加了公有 IP。还要检查公共子网的路由表是否与此子网关联,并且是否有指向 Internet 网关的路由 0.0.0.0/0。
    2. 如果您以私有方式运行实例,请确保您已在公有子网中创建了 NAT 网关。检查路由表是否有指向 NAT 的路由 0.0.0.0/0 并且子网与私有路由表关联。
    3. 检查与实例关联的安全组是否启用了出站流量。

    【讨论】:

      【解决方案3】:

      验证附加到实例的安全组是否允许所有入站和出站连接。

      我不知道这些更新需要什么特定的网络协议,但公共 SSH、HTTP 和 HTTPS 对我来说还不够。所以我只是让所有流量在短时间内运行更新。

      (我猜它可能只需要打开一个 FTP 端口,但我没有试验足够长的时间来找出答案。如果您具体知道 EC2 实例上的 yum 更新需要哪些端口,请随时编辑此答案.)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-16
        • 2021-01-19
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多