收到同事的V,说是:182上的npm不知道咋突然坏了,查到这里了,不敢动了。
咱一定要抓重点:突然坏了。这里的突然肯定不是瞬间(大概率是上次可用,这次不可用,中间间隔了多长时间,不好说~_~)。
来吧,登录到服务器上,执行npm命令:
~]# npm
node: relocation error: /lib64/libnode.so.93: symbol FIPS_selftest, version OPENSSL_1_1_0g not defined in file libcrypto.so.1.1 with link time reference
libcrypto.so.1.1不支持/lib64/libnode.so.93,但是呢后者依赖前者,这就是原因:
~]# ldd /lib64/libnode.so.93 | grep libcrypto
libcrypto.so.1.1 => /usr/local/openssl/lib/libcrypto.so.1.1 (0x00007f19e3eaf000)
显然是编译安装了一个openssl版本:
~]# ll /bin/openssl
lrwxrwxrwx 1 root root 30 Aug 12 09:45 /bin/openssl -> /usr/local/openssl/bin/openssl~]# openssl version
OpenSSL 1.1.1p 21 Jun 2022
这台机器是CentOS7.9,缺省安装的是1.0.2k,这里应该是升级openssh的时候将openssl升级了。
~]# rpm -qa|grep openssl
openssl-1.0.2k-26.el7_9.x86_64
openssl11-libs-1.1.1k-6.el7.x86_64
openssl11-1.1.1k-6.el7.x86_64
openssl-libs-1.0.2k-26.el7_9.x86_64
查看RPM包可以看到,除了原生安装的1.0.2.k外,还安装了1.1.1k版本,这么一来/usr/local/openssl就没必要了。
1、如下将/usr/local/openssl/lib注释掉
~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#/usr/local/openssl/lib
2、使用 ldconfig
命令更新动态链接库缓存:
~]# ldconfig
3、确认是否生效,引用到了/lib64/libcrypto.so.1.1
~]# ldd /lib64/libnode.so.93 | grep libcrypto
libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007efee33dd000)
最后,执行npm -v命令,问题解决:
~]# npm -v
8.19.4
刚通知同事,问题解决了,Please enjoy!结果告诉我还是不能用~~我这一脸问号还没消失,截图就过来了,问题回显如下:
~]# npm ping http://192.168.1XX.XX:4873/
npm notice PING http://192.168.1XX.XX:4873/
npm ERR! code ERR_INVALID_URL
npm ERR! Invalid URLnpm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2024-11-22T07_26_02_329Z-debug-0.log
问题定位:
1、telnet 192.168.1XX.XX 4873,是通的
2、在另外一台服务器上装了一个npm命令,OK的
3、问问AI,百度搜搜,无果~~不过AI回答的一个可能原因提醒了我(无心插柳,踏破铁鞋):因为之前的HVV,设置了防火墙策略,不允许访问互联网,我就设置了web代理。
解决:
注释掉代理配置,然后重新登录即可。