Win64版MSYS2执行pacman -Syu更新报SSL连接超时问题求助
MSYS2执行pacman -Syu报SSL连接超时解决方法
问题表现
64位Windows环境下全新安装MSYS2后,执行pacman -Syu命令同步软件包数据库、更新基础软件包时运行失败,所有环境对应的软件包数据库均无法下载,核心报错为从官方镜像源拉取db文件时触发SSL连接超时,报错日志如下:
$ pacman -Syu :: Synchronizing package databases... mingw32.db failed to download mingw64.db failed to download ucrt64.db failed to download clang32.db failed to download clang64.db failed to download error: failed retrieving file 'mingw32.db' from mirror.msys2.org : SSL connection timeout error: failed retrieving file 'mingw64.db' from mirror.msys2.org : SSL connection timeout error: failed retrieving file 'ucrt64.db' from mirror.msys2.org : SSL connection timeout warning: too many errors from mirror.msys2.org, skipping for the remainder of this transaction error: failed retrieving file 'clang32.db' from mirror.msys2.org : SSL connection timeout error: failed retrieving file 'clang64.db' from mirror.msys2.org : SSL connection timeout error: failed retrieving file 'mingw32.db' from repo.msys2.org : SSL connection timeout
可按以下优先级排查解决
- 优先替换镜像源
官方源在国内网络环境下访问稳定性差,是触发该问题的最常见原因:- 进入MSYS2安装目录下的
etc/pacman.d文件夹,找到所有名称以mirrorlist.开头的配置文件 - 逐个编辑上述文件,给文件内默认的官方镜像地址行前加
#做注释,将国内可正常访问的镜像源条目添加到对应文件的最顶部,保存所有修改
- 进入MSYS2安装目录下的
- 检查网络代理与防火墙规则
- 如果本地开启了系统代理,需要给pacman配置对应代理参数:编辑
etc/pacman.conf文件,在[options]段落下方添加XferCommand配置,指定本地代理的地址与端口,示例:XferCommand = /usr/bin/curl -x http://127.0.0.1:代理端口号 -L -f %u > %o - 临时关闭Windows Defender防火墙、第三方安全软件的网络拦截规则,排除拦截导致的连接超时
- 如果本地开启了系统代理,需要给pacman配置对应代理参数:编辑
- 遵循首次更新的正确操作流程
刚安装完成的MSYS2不要直接在默认打开的终端执行全量更新:- 关闭所有已打开的MSYS2窗口,运行安装目录下的
msys2_shell.cmd进入原生MSYS环境 - 先执行
pacman -Sy同步数据库,再执行pacman -Su更新核心基础包,更新完成后关闭终端 - 重新打开MSYS2终端,再执行
pacman -Syu完成剩余组件的全量更新
- 关闭所有已打开的MSYS2窗口,运行安装目录下的
- 修复SSL证书异常
如果上述操作完成后仍报SSL相关错误,先手动安装根证书包,执行命令pacman -S ca-certificates,安装完成后再重新执行更新操作即可。
所有配置修改完成后,可先执行pacman -Syy强制刷新所有软件包数据库,确认无下载报错后再执行全量更新即可。
内容的提问来源于stack exchange,提问作者Matthieu
相关产品推荐
相关产品推荐

