为什么我在运行 RHEL 的 Amazon EC2 实例上使用 yum 时会收到错误?
我想在运行 Red Hat Enterprise Linux (RHEL) 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上使用 yum,但我收到了错误。
简短描述
在 EC2 实例上运行 yum 命令后,您可能会收到错误。要确定发生的错误,请使用 yum 命令的输出消息。然后,使用最适合您的错误消息的解决方法。
解决方法
连接超时或无法下载软件包错误
错误: “Connection timed out XXXX milliseconds or failed to download the packages.”(连接超时 XXXX 毫秒或无法下载软件包。)
要解决此错误,请完成下面的步骤:
-
验证附加到您的 EC2 实例的安全组是否允许出站 HTTP 或 HTTPS 流量。
-
验证与您的实例子网关联的网络访问控制列表(网络 ACL)是否允许出站 HTTP 和 HTTPS 流量。请参阅以下网络 ACL 规则示例:
Inbound rules Rule# Type Protocol Port Range Source Allow/Deny 130 Custom TCP Rule TCP (6) 1024-65535 0.0.0.0/0 ALLOW 140 Custom TCP Rule TCP (6) 1024-65535 ::/0 ALLOW * ALL Traffic ALL ALL 0.0.0.0/0 DENY * ALL Traffic ALL ALL ::/0 DENY Outbound rules Rule # Type Protocol Port Range Destination Allow/Deny 100 HTTP (80) TCP (6) 80 0.0.0.0/0 ALLOW 101 HTTPS (443) TCP (6) 443 0.0.0.0/0 ALLOW 102 HTTP (80) TCP (6) 80 ::/0 ALLOW 103 HTTPS (443) TCP (6) 443 ::/0 ALLOW * ALL Traffic ALL ALL ::/0 DENY * ALL Traffic ALL ALL 0.0.0.0/0 DENY在前面的示例中,出站规则中的规则 100 和规则 101 对应于入站规则中的规则 130。出站规则中的规则 102 和规则 103 对应于入站规则中的规则 140。端口 80 和端口 443(HTTP 和 HTTPS)上允许的出站流量与临时端口上允许的入站流量相匹配。
示例网络 ACL 使用的临时端口范围为 1024-65535。您使用或与之通信的客户端类型决定了网络 ACL 的范围。要涵盖可能向虚拟私有云 (VPC) 中面向公众的实例发起流量的不同类型的客户端,请打开临时端口 1024-65535。您还可以向网络 ACL 添加规则,拒绝该范围内任何恶意端口的流量。确保将 deny(拒绝)规则置于表中比打开各种临时端口的 allow(允许)规则更早。
-
验证您的实例是否可以访问 RHEL 存储库。
如果您的实例位于带有互联网网关的公共子网中,请参阅互联网接入配置。
如果您的实例位于带有 NAT 网关的私有子网中,请参阅 NAT 网关。
如果您的实例位于带有 NAT 实例的私有子网中,请参阅 NAT 实例。
如果您的实例位于带有 Amazon Simple Storage Service (Amazon S3) VPC 端点的公共或私有子网中,请参阅 Red Hat 网站上的我们如何更新断开连接或受物理隔离的系统(没有互联网连接的系统)?
如果您的实例位于带有代理的私有子网中,请将 yum 配置为使用代理。使用以下参数修改 /etc/yum.conf 文件。在以下示例中,将 proxy-port、proxy-user-name 和 proxy-password 替换为您的代理的正确值:
proxy=http://proxy-server-IP-address:proxy_port proxy_username="proxy-user-name" proxy_password="proxy-password" -
要确认该实例可以访问存储库,请运行以下命令:
sudo yum check-update如果该命令成功检索到软件包信息而不出现错误,则您的实例可以访问存储库。
如果遇到错误,请检查 /etc/yum.repos.d/ 目录中的存储库配置文件,以确保它们配置正确。然后,使用适当的安全组规则确认您的实例位于公共子网中,以允许出站互联网流量。
无法联系任何 CDS 负载均衡器错误
错误: “Could not contact any CDS load balancers.”(无法联系任何 CDS 负载均衡器。)
要解决此错误,请使用与您的实例相同的 RHEL 版本的最新版本启动 EC2 实例。
-
要下载最新的 RHUI 客户端软件包,请登录到新实例,然后运行以下命令:
$ sudo yum install --downloadonly --downloaddir=/root/ rh-amazon-rhui-client.noarch -
将下载的 rpm 包复制到该实例。接着,运行以下命令:
$ sudo yum remove -y rh-amazon-rhui-client $ sudo rpm -ivh --nodeps /path/to/rpmfile/rh-amazon-rhui-client***注意:**将 /path/to/rpmfile 替换为将文件复制到的文件路径。
-
安装软件包后,必须重新安装它才能获得所有依赖关系:
$ sudo yum reinstall -y rh-amazon-rhui-client -
从 RHUI 下载所需的软件包:
$ sudo yum clean all $ sudo yum repolist $ sudo yum list
“Failure: Repodata/repomd.xml”(失败:Repodata/repomd.xml)错误或类似的“404 - Not Found”(404 - 未找到)错误
错误: “Failure: repodata/repomd.xml from rhel-7-server-rhui-rh-common-rpms: [Errno 256] No more mirrors to try or https://rhui3.eu-west-1.aws.ce.redhat.com/pulp/repos/content/dist/rhel/rhui/server/7/7/x86_64/rh-common/os/repodata/repomd.xml : [Errno 14] HTTPS Error 404 - Not Found”(失败:来自 rhel-7-server-rhui-rh-common-rpms 的 repodata/repomd.xml:\ [Errno 256] 没有镜像可以尝试或者 https://rhui3.eu-west-1.aws.ce.redhat.com/pulp/repos/content/dist/rhel/rhui/server/7/7/x86_64/rh-common/os/repodata/repomd.xml:[Errno 14] HTTPS 错误 404 - 未找到)
出现此错误的原因如下:
- yum 缓存损坏
- 由网络相关问题导致的存储库 URL 无法访问
- 自定义或其他媒体存储库
- 当您使用基于 IP 的防火墙配置访问 Red Hat 的内容分发网络 (CDN) 时,允许名单已过期
要移除然后重建 yum 缓存,请运行以下命令:
# rm -rf /var/cache/yum/* # yum clean all # yum check-update # yum repolist enabled
有关详细信息,请参阅 Red Hat 网站上的 Red Hat Satellite 6 客户端上出现的“[Errno 14] HTTPS Error 404 - Not Found”([Errno 14] HTTPS 错误 404 - 未发现)错误。
此系统未注册,但出现授权服务器错误
错误: “This system is not registered with an entitlement server.You can use subscription-manager to register.”(此系统未在授权服务器上注册。您可以使用订阅管理器进行注册。)
要解决此错误,请使用 subscription-manager(订阅管理器)注册系统。当您从 AWS Marketplace 运行实例时,该实例在 Red Hat 提供的元数据中包含嵌入式账单产品。当 Red Hat 连接到 AWS 使用的 RHUI 存储库时,Red Hat 会使用账单产品来检查订阅是否有效。
要检查实例上的账单产品,请运行以下命令:
$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document -q 2>/dev/null | grep billingProducts "billingProducts" : [ "bp-6fa54006" ],
如果您的实例拥有所需的账单代码,请忽略来自 subscription-manager(订阅管理器)的消息。如果您不想看到该消息,请将 /etc/yum/pluginconf.d/subscription-manager.conf 中的 subscription-manager(订阅管理器)插件设置为 enabled=0。运行以下命令:
sudo vi /etc/yum/pluginconf.d/subscription-manager.conf enabled=0
然后,保存并退出配置文件。
**注意:**如果您迁移实例或使用快照创建亚马逊机器映像 (AMI),则账单产品不可用。如果您使用具有账单代码的现有实例中的 CreateImage,则新 AMI 将继承此信息。AMI 现在可以与 RHUI 存储库通信。
