You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7执行sudo yum update时报curl#52错误(Empty reply from server)求助

CentOS 7执行sudo yum update时报curl#52错误(Empty reply from server)求助

嗨,刚接触CentOS 7遇到这个问题很正常,我来帮你一步步排查解决:

首先先明确你的问题情况:

我尝试运行sudo yum update时遇到错误:
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#52 - "Empty reply from server"
我已经在/etc/yum.conf中添加了代理配置(因为需要通过代理访问互联网),但仍然失败。我是CentOS Linux 7的新手,求帮助。

下面是针对性的排查和解决步骤:

一、先确认代理配置是否正确

很多时候代理格式写错是问题根源,你打开/etc/yum.conf检查是否符合以下格式:

# 无认证的代理配置
proxy=http://你的代理IP:代理端口/
# 如果代理需要用户名密码认证,追加下面两行
proxy_username=你的代理用户名
proxy_password=你的代理密码

注意:端口号、IP地址别写错,结尾的斜杠也不能省略哦!

二、测试代理能否正常访问镜像地址

直接用curl命令验证代理的连通性,执行下面的命令(替换成你的代理信息):

curl -x http://代理IP:端口 http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock
  • 如果返回空内容:说明代理本身有问题,可能是代理服务器未启动、代理不允许访问CentOS镜像地址,或者网络防火墙拦截了请求,这时候需要联系运维确认代理的可用性。
  • 如果能返回一串镜像地址:说明代理是正常的,问题出在yum配置或系统其他设置上。

三、尝试用全局环境变量临时配置代理

有时候yum.conf的配置没生效,或者sudo执行时没有继承代理环境变量,你可以试试临时设置全局代理再执行yum:

export http_proxy=http://代理IP:端口
export https_proxy=http://代理IP:端口
sudo yum update

如果这样能成功,说明是sudo未继承环境变量的问题,你可以用visudo命令(一定要用这个命令,直接编辑会导致sudo失效)编辑sudoers文件,添加一行:

Defaults env_keep += "http_proxy https_proxy"

四、替换CentOS 7归档源(非常重要!)

CentOS 7已经停止官方维护,原来的mirrorlist.centos.org可能已经无法正常提供服务,这也是很多用户遇到该错误的核心原因。你可以把yum源换成官方归档源:

  1. 先备份原有的repo配置文件,防止出错:
sudo cp -r /etc/yum.repos.d/ /etc/yum.repos.d.bak/
  1. 编辑/etc/yum.repos.d/CentOS-Base.repo文件,将每个小节的内容修改为如下(注释掉原mirrorlist,替换baseurl为归档地址):
[base]
name=CentOS-$releasever - Base
# 注释原mirrorlist
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/7/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  1. 清理旧缓存并生成新缓存:
sudo yum clean all
sudo yum makecache
  1. 再次执行sudo yum update试试。

五、检查防火墙和SELinux是否拦截请求

临时关闭SELinux测试:

sudo setenforce 0

临时关闭防火墙测试:

sudo systemctl stop firewalld

如果此时yum能正常运行,说明是安全策略拦截了请求,之后你需要重新开启防火墙和SELinux,并配置相应规则允许yum的网络访问。

备注:内容来源于stack exchange,提问作者Muhammad Asyraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:23:09