改DNS比换镜像源更优先,因为Composer卡在Loading repositories或报“Could not resolve host”时90%是DNS解析失败,域名无法解析则后续HTTP/TLS步骤全被阻塞;镜像源再快也无用。

为什么改DNS比换镜像源还优先
Composer 卡在 Loading composer repositories 或报 Could not resolve host,90% 是 DNS 解析失败,不是网络不通。换镜像源(如阿里云)能加速下载,但若连域名都解析不了,URL 再快也没用。DNS 层卡住,后续所有 HTTP/TLS 步骤全被阻塞。
/etc/resolv.conf 直接写死可信 DNS
虚拟机、Docker 容器或某些 Linux 发行版默认用 systemd-resolved 或宿主机转发 DNS,容易被劫持或超时。最稳做法是手动覆盖 /etc/resolv.conf:
- 删掉所有
nameserver行,只留两行: nameserver 114.114.114.114-
nameserver 223.5.5.5(阿里 DNS,国内响应快且稳定) - 加
options timeout:1 attempts:2防止 IPv6 fallback 拖慢(见下节)
注意:如果系统启用了 systemd-resolved,它会自动覆写 resolv.conf。必须先运行 sudo systemctl disable --now systemd-resolved,再手写。
hosts 文件预绑定关键域名 IP
DNS 解析失败常发生在 packagist.org、github.com、mirrors.aliyun.com 这几个域名。与其等 DNS 查询,不如直接映射到已知可用 IP:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
curl -I https://mirrors.aliyun.com/composer/查当前返回的 IP(例如223.6.6.6) - 追加进
/etc/hosts: 223.6.6.6 mirrors.aliyun.com223.6.6.6 packagist.org223.6.6.6 github.com223.6.6.6 githubusercontent.com
这个操作跳过了全部 DNS 查询链路,对首次安装或 CI 环境特别有效。但要注意:IP 可能变更,定期验证即可,不必追求永久固化。
禁用 IPv6 fallback 是提速隐形开关
Composer 默认先尝试 IPv6 地址,超时(通常 1–3 秒)再 fallback 到 IPv4。一个包卡 2 秒,100 个包就是 3 分钟无响应——而错误日志里可能只显示“still waiting”,不报错也不退出。
- 验证方法:
curl -v https://packagist.org 2>&1 | grep "Connected to",若看到 IPv6 地址(如2a03:2880:...)后长时间卡住,基本就是它 - 全局禁用:
echo 'precedence ::ffff:0:0/96 100' | sudo tee -a /etc/gai.conf - 或更彻底:在
/etc/resolv.conf加options inet6→ 改成no-inet6(部分系统支持)
这个点最容易被忽略,因为它不报错、不抛异常,只是“慢得离谱”。一旦关掉 IPv6 fallback,很多环境下的 Composer install 能从 5 分钟降到 20 秒内。

















