卡在“Resolving dependencies”需先看终端末行和资源占用:若停在“through SAT”且CPU>80%、内存缓涨,是约束冲突导致SAT求解爆炸;若无“through SAT”且诊断报curl error 7或出现IPv6地址,则为IPv6解析超时。

卡在 Resolving dependencies 不是网络慢,但禁用 IPv6 确实能秒解——前提是它真卡在 DNS 解析或连接建立阶段,而不是 SAT 求解器内部穷举。
怎么快速区分是网络卡还是求解卡
先看终端最后一行输出和资源占用:
- 如果停在
Resolving dependencies through SAT,CPU 持续 >80%,内存缓慢上涨,不是网络问题,是约束冲突导致求解爆炸 - 如果停在
Resolving dependencies(无 “through SAT”),且composer diagnose报curl error 7或日志里反复出现[2a02:fc00::1]这类 IPv6 地址,大概率是 IPv6 解析超时 - 执行
ping -6 packagist.org(Windows)或ping6 packagist.org(macOS/Linux),不通就基本锁定 IPv6 路径失效
禁用 IPv6 的三种方式,优先级分明
别改系统配置,也别碰 /etc/gai.conf——影响面太广。Composer 2.2+ 原生支持更轻量的控制:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
临时生效(推荐 CI/CD 和日常调试):Linux/macOS 执行
COMPOSER_NO_IPV6=1 composer install;Windows PowerShell 用$env:COMPOSER_NO_IPV6="1"; composer install -
项目级生效(不污染全局):在项目
composer.json的config段加"use-ipv4": true,然后运行composer update --lock生效 -
全局生效(慎用):运行
composer config -g use-ipv4 true,会写入~/.composer/config.json;旧版 Composer(1.x)不认这个字段,必须用环境变量
为什么设了 use-ipv4 还卡?检查这三处
常见“看似生效实则无效”的情况:
-
composer config -g repos.packagist.org输出不是扁平对象(如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}),而是嵌套结构或为空,说明镜像没真正落地,IPv4 请求仍打向失败的packagist.org - 项目
composer.json里写了repositories字段,覆盖了全局配置,导致即使设了use-ipv4,请求仍走未配置 IPv4 的私有源 - DNS 本身慢或失败:直接
curl -I https://mirrors.aliyun.com/composer/packages.json,若超时,换 DNS(如1.1.1.1)比调 Composer 参数更治本
禁用 IPv6 后还慢?可能根本不是它的问题
禁掉 IPv6 只解决“连接建立”层阻滞。如果之后卡在 Downloading 或 Resolving dependencies through SAT,就得转向其他方向:
-
Downloading卡住 → 调大COMPOSER_HTTP_TIMEOUT=600,不是process-timeout -
Resolving dependencies through SAT卡住 → 运行composer why-not vendor/package:version直击冲突链,别等它自己回溯完 - 频繁卡在 autoload_classmap.php 读取 →
ls -lh vendor/composer/autoload_classmap.php,超 2MB 就说明 autoload 配置污染严重,删掉测试文件、文档目录等无关路径
真正卡点往往藏在表象之下:一行 COMPOSER_NO_IPV6=1 能秒解的,只是 IPv6 解析失败那一小段;但很多人误以为“加了就该快”,结果发现还是卡——那八成是 SAT 求解器正默默在后台尝试第 83729 个版本组合。

















