CentOS7使用谷歌Artifact Registry YUM源安装包报Errno14 HTTPS500错误
问题原因及遗漏配置说明
核心原因
元数据缓存成功但下载RPM包报错500的问题,绝大多数是路径配置或GAR资源映射问题导致,具体可分为以下几类:
- baseurl末尾缺失斜杠:这是最常见的错误。你当前配置的baseurl为
https://LOCATION-yum.pkg.dev/projects/PROJECT/REPOSITORY_NAME,缺少末尾的/。yum拉取元数据时,GAR后端会自动补全路径正常返回,但下载具体RPM包时,yum会直接拼接包名到baseurl后,生成错误的请求地址https://LOCATION-yum.pkg.dev/projects/PROJECT/REPOSITORY_NAMExxxxxx-0.7.0~SNAPSHOT-xxxxx-1.x86_64.rpm,导致GAR后端无法匹配资源返回500错误。 - RPM包存储路径与元数据映射不匹配:如果你未使用官方
gcloud artifacts yum upload命令上传包,而是手动将RPM包上传到GAR的对象存储路径,可能出现元数据索引中记录的包路径和实际存储路径不一致的情况,此时元数据可以正常生成识别,但下载时GAR找不到对应存储对象返回500。 - 特殊字符解析异常:你的包名包含
~特殊字符,部分低版本yum/url解析组件会对该字符做转义处理,导致GAR后端接收到的请求路径和实际存储路径不匹配,触发服务端错误。
遗漏的配置及修复步骤
- 首先修改
/etc/yum.repos.d/下的源配置文件,给baseurl末尾添加斜杠,修正后配置如下:
[my-repo] name=my-repo baseurl=https://LOCATION-yum.pkg.dev/projects/PROJECT/REPOSITORY_NAME/ enabled=1 repo_gpgcheck=0 gpgcheck=0
- 执行
yum clean all && yum makecache重新生成缓存后再尝试安装。 - 如果修改后仍报错,可以手动拼接RPM包的完整地址,用
curl -v 完整包地址请求查看返回详情,确认问题根因:- 若返回403,说明公开仓库权限配置不全,需要给
allUsers主体授予roles/artifactregistry.reader权限 - 若返回404,说明包实际存储路径和元数据记录不一致,建议删除现有包后用
gcloud artifacts yum upload REPOSITORY_NAME --location=LOCATION --source=本地RPM包路径命令重新上传 - 若仍返回500,可检查是否有代理、防火墙改写了请求头,或者在GCP控制台查看Artifact Registry的运行日志排查服务端错误。
- 若返回403,说明公开仓库权限配置不全,需要给
内容的提问来源于stack exchange,提问作者pskrbasu
相关产品推荐
相关产品推荐

