You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arch Linux下npm/yarn操作出现ETIMEDOUT错误求助

解决npm/yarn ETIMEDOUT问题的进阶方案

1. 强制npm仅使用IPv4(持久化配置)

之前禁用IPv6仅成功一次,大概率是临时配置未持久化,或者系统自动恢复了IPv6。直接给npm全局锁定IPv4:

  • 执行以下命令配置:
    npm config set ipv4 true --global
    npm config set registry http://registry.npmjs.org/ --global
    npm config set fetch-retry-mintimeout 2000 --global
    npm config set fetch-retry-maxtimeout 10000 --global
    
  • 验证配置是否生效:
    npm config get ipv4
    
    输出应为true

2. 系统层面永久禁用IPv6(Arch Linux专属)

临时禁用IPv6重启后会失效,直接在系统层面锁死:

  • 立即生效的临时禁用:
    sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
    
  • 持久化配置(重启后仍生效):
    编辑/etc/sysctl.d/99-sysctl.conf,添加两行:
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv6.conf.default.disable_ipv6=1
    
    然后刷新配置:
    sudo sysctl --system
    

3. 修复DNS解析问题

缓存清理可能打乱了DNS配置,导致npm无法解析registry地址:

  • 更换为公共DNS(以systemd-resolved为例):
    编辑/etc/systemd/resolved.conf,修改如下内容:
    DNS=8.8.8.8 8.8.4.4
    FallbackDNS=1.1.1.1 1.0.0.1
    
    重启DNS服务:
    sudo systemctl restart systemd-resolved
    
  • 验证解析是否正常:
    nslookup registry.npmjs.org
    ping -4 registry.npmjs.org
    
    确保能返回IPv4地址且ping通

4. 检查防火墙/网络规则

清理缓存后防火墙规则可能重置,阻止了npm的出站请求:

  • 查看当前防火墙状态(以ufw为例):
    sudo ufw status
    
    确保允许80、443端口的出站请求
  • 临时关闭防火墙测试:
    sudo ufw disable
    
    如果此时npm ping成功,说明是防火墙规则问题,重新配置允许npm相关的网络请求即可

5. 完全重置npm配置

之前的配置修改可能存在冲突,一键重置到默认状态:

npm config delete proxy
npm config delete https-proxy
npm config delete registry
npm config set registry https://registry.npmjs.org/
npm cache clean --force

重置后再执行npm ping测试

6. 单独重置yarn配置

如果yarn也出现相同问题,单独处理yarn:

yarn config delete proxy
yarn config delete https-proxy
yarn config set registry https://registry.npmjs.org/
yarn cache clean

内容的提问来源于stack exchange,提问作者Raihanur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:22:34