Featured image of post centos7 安装或者升级 node18+ 及 node20+

centos7 安装或者升级 node18+ 及 node20+

现在很多JS框架如果在服务器进行node管理或者打包,都需要安装高版本的node,但是centos7安装高版本的node会出现问题,无法直接使用命令

安装 Node

如果之前并未安装,可以选择先进行安装

方法1:官网压缩包安装

下载

以下两种方式下载(确定版本):

  1. 官网下载 ,然后上传至服务器
  2. 命令下载
1
$ wget https://npmmirror.com/mirrors/node/v18.18.0/node-v18.18.0-linux-x64.tar.xz

安装

下载后需要解压,并添加软链全局设置才可任意目录使用命令,否则,只能在解压目录使用

软链

假设压缩包在目录 /data/node-v18.18.0-linux-x64.tar.xz,执行以下命令安装

1
2
3
4
5
$ cd /data
$ tar -xzvf node-v18.18.0-linux-x64.tar.xz /data/nodejs
$ ln -s /data/nodejs/bin/npm /usr/local/bin/
$ ln -s /data/nodejs/bin/npx /usr/local/bin/
$ ln -s /data/nodejs/bin/node /usr/local/bin/

缺点是需要一个一个安装

全局安装

打开配置文件

1
$ vi /etc/profile

输入 i 进入编辑状态,在文件末尾追加:

1
2
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

esc后输入 :wq 进行保存。或者输入 :q 退出。然后重新加载 profile 文件

1
$ source /etc/profile

测试

安装成功后使用 node -vnpm -v 命令进行测试,出现版本号则可以直接使用,若出现如下提示,则需要升级模块组件:

1
2
3
/lib64/libc.so.6: version `GLIBC_2.25‘ not found
/lib64/libc.so.6: version `GLIBC_2.27‘ not found
/lib64/libc.so.6: version `GLIBC_2.28‘ not found

方法2:使用 yum 安装

安装 epel

1
$ yum install epel-release -y

安装 node

1
$ yum install nodejs  npm -y

如果安装18版本以上的,可能会失败,并出现如下提示,通用需要升级模块组件:

1
2
3
/lib64/libc.so.6: version `GLIBC_2.25‘ not found
/lib64/libc.so.6: version `GLIBC_2.27‘ not found
/lib64/libc.so.6: version `GLIBC_2.28‘ not found

升级 Node

如果已存在旧版本的 node,可以直接进行升级

切换镜像源

如果是国内,推荐使用淘宝镜像,速度更快更稳定

1
2
3
4
# 查看当前镜像
$ npm config get registry
# 设置镜像
$ npm config set registry https://registry.npmmirror.com/

安装版本管理包

全局安装 n

1
$ npm install n -g

如果执行 n -h 提示找不到命令,那么需要添加软链 n

假设 node 压缩包安装,并且解压在 /data/nodejs

1
$ ln -s /data/nodejs/bin/n /usr/local/bin/

更新 node

1
$ n stable

查看更新是否成功

1
$ node -v

如果出现如下提示信息,那么需要升级模块组件:

1
2
3
/lib64/libc.so.6: version `GLIBC_2.25‘ not found
/lib64/libc.so.6: version `GLIBC_2.27‘ not found
/lib64/libc.so.6: version `GLIBC_2.28‘ not found

安装 yarn pnpm pm2 等

同全局安装 n

升级 GLIBC_2.28

查看当前系统已安装:

1
$ strings /lib64/libc.so.6 |grep GLIBC

尝试升级

我们直接升级提示所需的最高版本,低于这个版本的会一起安装上:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ wget  https://mirror.bjtu.edu.cn/gnu/libc/glibc-2.28.tar.xz

$ tar -xf glibc-2.28.tar.xz -C /usr/local/

$ cd /usr/local/glibc-2.28/

$ mkdir build

$ cd build/

$ ../configure --prefix=/usr/local/glibc-2.28

升级报错

执行最后一个命令后,可能出现的报错:

错误1

1
2
configure: error: in `/root/test/glibc-2.28/build’:
configure: error: no acceptable C compiler found in $PATH

解决方案:安装 gcc

1
$ yum install gcc -y

然后重新执行:

1
 $ ../configure --prefix=/usr/local/glibc-2.28

可能继续出现错误:

错误2

1
2
These critical programs are missing or too old: make
Check the INSTALL file for required versions.

解决方案:make 太过老旧, 升级make ,然后 升级glibc

错误3

1
2
These critical programs are missing or too old: compiler
Check the INSTALL file for required versions.

解决方案:gcc 版本太旧, 升级gcc

升级gcc

查看 gcc 版本

1
$ gcc -v

升级 gcc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ yum -y install centos-release-scl

$ yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils

$ scl enable devtoolset-8 bash

# yum安装完,原来的gcc不覆盖,需要执行enable脚本更新环境变量 
$ source /opt/rh/devtoolset-8/enable

# 想保持覆盖,可将其写入~/.bashrc或/etc/profile
$ echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile

# 查看gcc版本
$ gcc -v

升级make

查看 make 版本

1
$ make -v

升级 make

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz

$ tar -xzvf make-4.2.tar.gz

$ cd make-4.2

$ sudo ./configure

$ sudo make

$ sudo make install

$ sudo rm -rf /usr/bin/make

$ sudo cp ./make /usr/bin/

$ make -v

升级glibc

如果已进行 尝试升级 ,可直接进行如下操作,如果没有请先进行 尝试升级

1
2
3
4
$ cd /usr/local/glibc-2.28/build
$ yum install -y bison
$ sudo ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
$ make

执行 make 大约需要半小时,进行安装,等待完成

如果安装失败,解决 error 后进行重新安装

1
2
3
$ make clean
$ make
$ make install

查询是否安装成功

1
$ strings /lib64/libc.so.6 |grep GLIBC
Licensed under CC BY-NC-SA 4.0
最后更新于 2023-12-14 17:19:00