“hash sum mismatch”等问题根源是网络代理劫持http响应导致校验失败,需禁用apt流水线与代理缓存、清空lists和deb缓存、执行apt update --fix-missing,并优先切换至mirrors.kylinos.cn源验证修复效果。

银河麒麟系统执行apt update或apt install时反复提示“Hash Sum mismatch”“Failed to fetch”或下载中断,说明APT在比对远程包文件的SHA256/MD5校验值与本地缓存记录时不一致,这通常不是镜像源本身问题,而是中间网络环节(如运营商代理、校园网网关、企业防火墙)篡改了HTTP响应流导致的。
确认是否为代理干扰导致
先验证问题根源:用手机热点重试sudo apt update。若切换后立即成功,基本可锁定是本地网络出口设备(如路由器、ISP透明代理)劫持了HTTP连接并破坏了分块传输或缓存头——这种干扰会让APT误判文件完整性,但不会影响浏览器访问。
这一步不能跳过。盲目清理缓存或换源可能掩盖真实原因,后续仍会复现。
禁用HTTP流水线并强制绕过代理缓存
银河麒麟基于Debian系,其APT默认启用HTTP/1.1流水线(Pipeline-Depth 10),而多数故障代理无法正确处理多请求复用,导致响应体错位、校验值错乱。
方法一:临时生效(重启终端即失效)
执行:echo 'Acquire::http::Pipeline-Depth "0"; Acquire::http::No-Cache "true";' | sudo tee /etc/apt/apt.conf.d/99FixHashCheckSumError
方法二:永久写入(推荐)
直接创建配置文件:sudo nano /etc/apt/apt.conf.d/99FixHashCheckSumError,粘贴以下两行:
Acquire::http::Pipeline-Depth "0";
Acquire::http::No-Cache "true";
【必须使用双引号包裹数值,且末尾不加逗号或分号】格式错误会导致apt解析失败,后续所有更新命令报错退出。
清除已损坏的元数据缓存
即使修复了网络层行为,旧缓存中残留的错误Hash记录仍会触发校验失败。需彻底清空再重拉:
第一步:删除全部列表缓存
sudo rm -rf /var/lib/apt/lists/*
第二步:清空已下载的.deb包缓存
sudo apt clean
第三步:强制刷新索引,跳过缺失项
sudo apt update --fix-missing
这一步会重新下载Packages文件,新配置已禁用流水线和代理缓存,能规避大部分校验错位。若仍报错,说明当前源服务器本身返回了异常响应头——此时应切换至mirrors.kylinos.cn官方镜像(非archive.kylinos.cn)。
验证修复效果
运行:sudo apt update && apt list --upgradable
观察输出中是否出现“获取”“已下载”字样且无“Hash Sum mismatch”报错。若显示“有X个软件包可以升级”,说明校验流程已恢复正常。











