欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

CentOS 7安装Nodejs 踩过的坑 有大用 有大大用

说明:本文介绍如何在云服务器上CentOS 7操作系统上安装Nodejs。以及安装过程中遇到的问题。

下载压缩包&解压

首先,先去官网下载Linux版本的Node。

image.png            

将下载下来的压缩包,上传到云服务器上,解压。配置环境变量。

(解压)

tar -zxvf 压缩包名.gz
            
        
  • 1

           

(编辑配置文件)

vim /etc/profile
            
        
  • 1

           

(添加下面的配置,路径换成自己解压的nodejs文件路径)

#node environment
export NODEJS_HOME=/usr/local/dev/nodejs/node-v20.11.0-linux-x64
export PATH=$NODEJS_HOME/bin:$PATH
            
        
  • 1

  • 2

  • 3

           

在这里插入图片描述            

第一个问题

输入node -v,出现第一个问题,如下:

在这里插入图片描述            

该问题参考了这两篇文章,上图出自参考一:

  • 参考一  所有的参考都要本页面的下面

  • 参考二  所有的参考都要本页面的下面

是因为glibc的版本过低,需要提升glibc的版本。可去官网下载新版本的glibc,我下的是2.28版本的。可参考上面两篇文章编译、安装。

在这里插入图片描述            

第二个问题

安装完成后,我的云服务器出现了下面的问题。每次进入云服务器、切换目录,或者做其他操作都会弹出下面一个警告。

/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.GB2312)            

像是系统语言相关的配置出错了。参考了下面这篇文章解决了,下图来自此文章。修改完记得重启一下系统,即reboot命令;

  • 参考三   所有的参考都要本页面的下面

在这里插入图片描述            

第三个问题

前面更新了gclib版本后,再敲node -v命令,报错少了一些,但是还有以下问题:

在这里插入图片描述            

这个问题参考了下面这篇文章:

  • 参考四   所有的参考都要本页面的下面

先搜索本地的libstdc++.so.6文件:

find / -name "libstdc++.so*
            
        
  • 1

           

将高版本的此文件拷贝到 /usr/lib64目录下,如下图,我的已经有了就不用了。如果没有就在下面找找,看哪里有拷一份过来。

在这里插入图片描述            

然后,删掉原来的 libstdc++.so.6文件,重新建立链接。注意,不要敲成6.0,如下图,前面敲错了,下面又重新敲了一遍。

rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6
            
        
  • 1

  • 2

           

完事后,再敲node -v,终于可以了。

在这里插入图片描述            

文章知识点与官方知识档案匹配,可进一步学习相关知识

云原生入门技能树首页概览18241 人正在系统学习中                


               

来自 https://blog.csdn.net/qq_42108331/article/details/136059138                


               


               


               


               

node: /lib64/libm.so.6: version `GLIBC_2.27' not found                

场景

cent os7服务器使用nvm安装的node之后,只要使用npm或者node,均会出现以下问题

                                                      

[root@172 ~]# npm -v
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
                                               


           

原因

查看系统内安装的glibc版本
然后再根据分析可得知 新版的node v18开始 都需要GLIBC_2.27支持,可是目前系统内却没有那么高的版本

                                                      

[root@172 glibc-2.28]# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
...
GLIBC_2.17
....
                                               


           

解决办法

更新glibc

根据提示 安装所需要的glibc-2.28

                                                      

wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz 
cd glibc-2.28/ && mkdir build  && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
                                               


           

可能出现的错误

上步更新glibc 可能会发生错误。
如果没有错误 下边这一步 不用看。

make问题

                                                      

configure: error: 
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.
                                               


           

解决办法:升级gcc与make

                                                      

# 升级GCC(默认为4 升级为8)
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

# 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure  --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
                                               


           

这时 所有的问题 都已经解决完毕 再重新执行上一步 更新glibc即可

                                                      

cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
                                               


           

我的依旧报错:bison太老旧

                                                      

configure: error: 
*** These critical programs are missing or too old: bison
*** Check the INSTALL file for required versions.
                                               


           

看看我的bison版本多少

                                                      

[root@172 ~]# bison -v
-bash: bison: 未找到命令
                                               


           

bison问题

嗨,没装啊。装一下呗

                                                      

yum install -y bison
                                               


           

这时 所有的问题 真的真的都已经解决完毕 再重新执行上一步 更新glibc即可

                                                      

cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
                                               


           

继续更新glibc

make 和 make install在linux中就是安装软件的意思 简单这么理解就好。
这个过程较长,大约半小时左右,建议打一局游戏就好了。

                                                      

make && make install
``

验证下 是不是好了
```shell
npm -v
                                               


           


               

来自 https://www.cnblogs.com/dingshaohua/p/17103654.html                



   

               

                    




           

【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version `GLIBC_2.27‘ not found


               

【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version `GLIBC_2.27' not found


           

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验

背景

最近做一个前端项目Jenkins的自动构建时,项目使用nodejs18,正好公司Jenkins节点有些不够用,就用了台资源空余比较多的服务器用于充当Jenkins节点,配置好NodeJS路径后,构建时产生报错如下:

node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
            
  • 1

           

分析原因

使用strings命令查看当前glibc支持的版本

# 使用strings命令查看
strings /lib64/libc.so.6 |grep GLIBC_
# 查看结果如下:
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
            
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

           

发现只能到2.17
执行ldd --version也会看到glibc版本是2.17

解决方案

  1. 升级 gcc 和 glibc 版本:注意,在升级前备份重要数据,并仔细阅读相关文档和使用说明。

  2. 使用其他发行版:可以考虑使用其他发行版,如 Ubuntu 或 Fedora,这些发行版默认已经安装了适用于 Node.js 18 的 gcc 和 glibc 版本。

  3. 使用 Node.js 16:Node.js 16 是一个长期支持版本(LTS),它需要的 gcc 和 glibc 版本要求相对较低,可能与你的系统版本兼容。您可以尝试使用 Node.js 16,它可以提供类似于 Node.js 18 的功能,并在未来几年内受到支持和更新。

小结
作为硬核技术派头铁程序员,我当然选择方案一。

执行步骤

我们可以手动下载gcc包glibc包,然后进行配置、编译、安装、挂载这些步骤,但这样做风险还是有点大的,特别是不太懂的小白很容易把服务器搞崩。

推荐方式

这里推荐先使用devtoolset工具进行自动安装,操作步骤如下:

  1. 安装 devtoolset 8:Devtoolset 8 包括更新的 GCC 和 GLIBC,可以满足 Node.js 18 的要求。使用以下命令安装 Devtoolset 8:

sudo yum install centos-release-scl
sudo yum install devtoolset-8
            
  • 1

  • 2

           
  1. 激活 devtoolset 8:安装完成 Devtoolset 8 后,需要激活 Devtoolset 8 才能使用更新的 GCC 和 GLIBC。使用以下命令激活 Devtoolset 8:

scl enable devtoolset-8 bash

            
  • 1

           
  1. 更新 GCC 和 GLIBC:使用 Devtoolset 8 提供的更新版本替换系统自带的 GCC 和 GLIBC。使用以下命令更新:

sudo yum install devtoolset-8-toolchain
sudo scl enable devtoolset-8 bash


            
  • 1

  • 2

  • 3

           
  1. 验证更新版本:使用以下命令验证 GCC 和 GLIBC 版本:

gcc --version
ldd --version
            
  • 1

  • 2

           

如果显示的 GCC 版本为 8.x.x,并且显示的 GLIBC 版本为 2.28 或更高版本,则说明已成功更新。
5. 再执行node -v命令来看看是否还有报错?

踩坑记录

执行ldd --version后发现glibc还是2.17版本,所以需要手动升级了,附上手动升级glibc的步骤:

  1. 下载 GLIBC 源码:可以从官方网站或者清华镜像下载 GLIBC 的源码包,例如 glibc-2.28.tar.gz(不建议装太新的)。

  2. 解压源码包:使用 tar 命令解压源码包:

tar -xzf glibc-2.28.tar.gz
            
  • 1

           
  1. 编译和安装:切换到源码目录并使用 configure 和 make 命令编译和安装 GLIBC:

cd glibc-2.28
mkdir build
cd build
../configure --prefix=/usr
make
sudo make install

            
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

           
  1. 安装成功。

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~往期精选~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            

【Docker】入门教程-基本概念解读
【前端-React Native】移动端原生开发整合React Native Elements教程-安卓示例
【前端-开发环境】使用NVM实现不同nodejs版本的自由切换(NVM完整安装使用手册)
【前端-NPM私服】内网使用verdaccio搭建私有npm服务器
【前端-IE兼容】Win10和Win11使用Edge调试前端兼容IE6、IE7、IE8、IE9、IE10、IE11问题
【前端-工程化】React项目工程化记录-内置项目活文档(老项目升级优化-集成Hosky/ESLint/Prettier-升级Webpack/Babel/NodeSass/React)
【工具-TWRP-frp-Termux】旧手机暴改成免费云服务器-MIUI刷TWRP安装magisk获取root
【工具-Shell脚本】java程序产品包模板-linux和windows通用shell启动停止脚本(无需系统安装Java运行环境)
【工具-Nginx】从入门安装到高可用集群搭建
【工具-Nginx】Nginx高性能通用配置文件-注释版-支持防刷限流、可控高并发、HTTP2、防XSS、Gzip、OCSP Stapling、负载、SSL
【工具-WireShark】网络HTTP抓包使用教程
【后端-maven打包】通过profile标签解决同时打jar包 war包需求
【架构-DDD】使用领域驱动设计-互联网未来架构设计之道(一)
【后端-SpringCache】基于Spring Cache封装一个能够批量操作的Redis缓存记录下踩坑历程(pipeline或mget封装)
【后端-SkyWalking】SkyWalking前后端开发环境搭建详细教程步骤-6.x/7.x/8.x版本通用-插件二次开发利器(一)
【后端-Quartz】Springboot整合Quartz支持集群环境-设计业务与框架分离及实现定时任务调度            


           

          
   


   

关于 /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en.US_UTF-8) 问题    


亲测可行

中文

复制代码

# vim /etc/profile.d/locale.sh
export LC_CTYPE=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

# vim /etc/locale.conf.UTF-8

# vim /etc/sysconfig/i18n.UTF-8

# vim /etc/environment.UTF-8
LC_ALL=zh_CN.UTF-8


复制代码

 

英文

复制代码

# vim /etc/profile.d/locale.sh
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

# vim /etc/locale.conf.UTF-8

# vim /etc/sysconfig/i18n.UTF-8

# vim /etc/environment.UTF-8
LC_ALL=en_US.UTF-8


复制代码

 

分类: Python

来自  https://www.cnblogs.com/lzh0769/p/10646788.html  


node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14‘ not found (required by node)


最近为了升级了最新的Node.js, 但 CentOS7 运行 Node.js 的时候会出现以下错误:

# node -v
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by node)
  • 1

  • 2

  • 3

  • 4

  • 5

网上找了一些解决办法,顺便记录下来:

首先,检查动态库

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

发现最高只有 GLIBCXX_3.4.13,所以这里需要下载最新gcc库:

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
  • 1

更多版本:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
然后解压:

tar -zxvf gcc-8.3.0.tar.gz
  • 1

然后编译安装 gcc:

cd gcc-8.3.0/ 
./contrib/download_prerequisites

mkdir build
cd build   
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

这是一个漫长的过程:

make && make install
cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6
  • 1

  • 2

  • 3

  • 4

  • 5

然后再次执行以下命令来查看是否包括 GLIBCXX_3.4.14

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

现在,动态库的版本已经到了GLIBCXX_3.4.25

来自  https://blog.csdn.net/chj_1224365967/article/details/125715375


     
普通分类: