答案:卡在resolving dependencies或下载阶段主因是dns解析失败或ipv6 fallback隐形超时;需先用ping和curl定位dns或防火墙问题,再强制ipv4、换dns、配镜像并清缓存。

Composer 更新卡在 Resolving dependencies 或下载阶段,90% 不是网络慢,而是 DNS 解析失败或 IPv6 fallback 导致的隐形超时。
为什么 ping 不通但 curl 也卡住?先查 DNS 层
Composer 默认用系统 DNS 解析 packagist.org,一旦返回 unknown host,后续所有请求都会失败——它不会自动换 DNS,也不会报明确错误,只表现为“卡住”。
- 运行
ping packagist.org:如果返回unknown host,说明 DNS 解析失败,立刻换公共 DNS(如8.8.8.8或114.114.114.114) - 运行
curl -I https://packagist.org:如果卡住或报Failed to connect,说明是防火墙、代理或 TLS 层拦截,不是 DNS 问题 - 公司/学校网络常统一屏蔽
https://packagist.org,这不是你配错了,是策略本身不放行
IPv6 fallback 是最隐蔽的“假性卡顿”源头
Composer 2.x 默认优先尝试 IPv6 地址,单次超时通常 1–3 秒;上百个包叠加,就是几分钟无响应,且日志里看不到错误。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 验证方法:
curl -v https://packagist.org 2>&1 | grep "Connected to",若看到类似Connected to packagist.org (2a03:2880:...)后卡住,基本就是 IPv6 fallback 导致 - 临时绕过:
curl -4 -I https://packagist.org强制走 IPv4,确认是否恢复 - 根治办法:在系统级禁用 IPv6(如 Linux 加
sysctl -w net.ipv6.conf.all.disable_ipv6=1),或在 Docker 容器启动时加--dns 8.8.8.8
hosts 文件硬解析有时比换 DNS 更快
当 DNS 切换仍不稳定(比如某些内网环境),直接写死 IP 是最确定的方案,尤其适合 CI/CD 或 Docker 构建。
- 获取真实 IP:
dig +short packagist.org @8.8.8.8或用国外服务器ping packagist.org - Linux/macOS 编辑
/etc/hosts,追加一行:137.74.169.73 packagist.org(IP 以实际查询为准) - Windows 编辑
C:\Windows\System32\drivers\etc\hosts,同样追加 - 改完后清本地 DNS 缓存:
sudo dscacheutil -flushcache(macOS)或ipconfig /flushdns(Windows)
镜像源配对 DNS 才算真正生效
只配镜像不解决 DNS 问题,只改 DNS 不换源照样卡在元数据请求——二者必须配合。清华、阿里云等镜像虽在国内,但域名仍需解析,mirrors.tuna.tsinghua.edu.cn 同样可能被本地 DNS 拦截。
- 全局设镜像:
composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(注意末尾斜杠不能少) - 立刻清缓存:
composer clear-cache,否则仍可能从旧缓存读取 packagist.org 地址 - 验证是否真走镜像:
composer install -vvv 2>&1 | grep "GET https",看请求域名是不是镜像地址 - 项目级
composer.json中若定义了repositories,会覆盖全局配置,此时必须删或同步修改
真正卡点往往不在“下载多慢”,而在“连不上、连得慢、连错协议”。DNS 层没理清,调 process-timeout 或 parallel-downloads 都只是掩耳盗铃。










