IPv6 导致npm、apt、dnf、brew等包管理工具无法更新和正常使用的问题解决办法之一

前言

        目前在编码开发人员的系统里或实际项目中,基本都会用到一些系统级或特定环境的包管理工具,这些工具很大程度上解决了我们对各种依赖问题。但是我们在使用这些工具时也会经常发现会有这样那样的问题。

        比如:npm insall [包名] 卡在 下面这个提示一直不动。

idealTree:lib: sill idealTree buildDeps

       提示:我们只做问题发现后的解决思路分析,所以本文,我们将只用 npm 举例,其他包管理工具(我在用git时也发现过类似的问题),如果常规搜索出的解决办法,不能帮助你时,你可以分析下是否有我一样的环境。

折腾

        一般这类问题都是因为库服务网络不通。好像很好解决这个问题,在搜索引擎的帮助下,我得到了如下几个解决办办法:

        1、修改 registry 为国内镜像,提到最多的是taobao的 https://registry.npm.taobao.org ,现在已经改成 https://registry.npmmirror.com 地址了;

        2、一堆的清缓存、删除已经安装的目录等等,然后开启‘重启大法’,你就开始陷入循环的重启、重置、重新npm install;

        3、告诉你你的网络和外面不通,让你使用一些工具,翻山越岭~~~~,这个不细说了;

        好吧,在我用的认为我很扎实的基础知识下,我还是把上面的这些方法都试了一次。直到我看到一位兄弟说,ping了一下 registry.npmmirror.com 域名,确认是通的后就可以了。

懵逼

        额~~~~,我也ping了一下,等等,为什么我ping不通???但是浏览器里,我是可以打开镜像站点的。

admin@debian:~$ ping registry.npmmirror.com
PING registry.npmmirror.com(2408:870c:1000:7:3::3fc (2408:870c:1000:7:3::3fc)) 56 data bytes
^C
--- registry.npmmirror.com ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5115ms

        请专注一点,ping 的结果里,解析出来的IP是v6 [2408:870c:1000:7:3::3fc],原来是v6的环境不通,可是我用的是v4、v6双栈啊!!!

人间清醒

        冷静思考一下,是不是优先使用v4就能解决?

        我用的是Debian ,再次百度得到“Debian Linux设置IPv4访问优先”。

        修改文件:/etc/gai.conf ,在Debian系的系统里好像都是这个文件

        先打开他:

sudo vi /etc/gai.conf

        查找到 

#precedence ::ffff:0:0/96 100

        修改为

precedence ::ffff:0:0/96 100

        再ping registry.npmmirror.com,通了,解析出的v4地址

admin@debian:~$ ping registry.npmmirror.com
PING registry.npmmirror.com.w.cdngslb.com (119.188.172.172) 56(84) bytes of data.
64 bytes from 119.188.172.172 (119.188.172.172): icmp_seq=1 ttl=56 time=15.0 ms
64 bytes from 119.188.172.172 (119.188.172.172): icmp_seq=2 ttl=56 time=15.5 ms
^C
--- registry.npmmirror.com.w.cdngslb.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms

        npm install也ok了,好像一切的锅都让v6抗下了,哈哈~~~

        并不是,你看

root@debian:~# ping registry.npmmirror.com
PING registry.npmmirror.com(2408:872b:f01:1002:3::3fb (2408:872b:f01:1002:3::3fb)) 56 data bytes
64 bytes from 2408:872b:f01:1002:3::3fb (2408:872b:f01:1002:3::3fb): icmp_seq=1 ttl=54 time=35.9 ms
……
64 bytes from 2408:872b:f01:1002:3::3fb (2408:872b:f01:1002:3::3fb): icmp_seq=9 ttl=54 time=37.1 ms
^C64 bytes from 2408:872b:f01:1002:3::3fb: icmp_seq=10 ttl=54 time=36.0 ms

--- registry.npmmirror.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9008ms
rtt min/avg/max/mdev = 35.644/42.175/94.269/17.369 ms

        思考        

        所以问题在哪里呢?大家自己研究吧,总之优先使用v4后,解决了包管理的一个问题。

声明:只是提供一个方法供大家参考,并不一定能解决你的问题,总之在解决问题的时候,要注意细节。即便是别人成功的解决方案,也需要结合自己的情况综合处理。

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值