centos搭建 Node.js 开发环境

Node.js ,通常简称为Node,是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Chrome V8引擎,具备速度快、性能强等特点,可用于搭建各类网络应用,及作为小程序后端服务环境。npmnpx 都是和 Node.js 相关的命令行工具,它们在 JavaScript 开发中扮演着重要的角色。

npm:1、允许开发者在项目中安装、管理和共享JavaScript包和模块;2、可以自动处理项目依赖,确保所有必要的包都被安装,并且版本兼容;3、npm能够管理包的版本,支持语义版本控制,使得依赖管理更加灵活和可靠;4、允许在package.json文件中定义脚本,可以通过npm命令运行这些脚本;5、开发者可以通过npm发布自己的包,供其他开发者使用。

npx:1、一次性命令执行,允许开发者直接运行Node.js包而不需要先安装它们;2、可以在不全局安装包的情况下执行命令;3、npx还可以用来执行本地安装的命令行工具,而不需要在package.json中定义脚本来调用它们。4、可以轻松地在不同的Node.js版本之间切换。

centos:CentOS Linux release 7.9.2009 (Core),最小化安装系统。

python:Python-3.10.1


1、centos7,yum源安装node

复制代码
yum install -y epel-release   # 安装EPEL仓库
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -   # 针对Node.js16的
yum install -y nodejs
yum install -y nodejs-16.14.2

# 验证安装:
node -v
npm -v
npx -v

2、centos7使用 NVM安装

NVM 允许你在同一台机器上安装和管理多个 Node.js 版本。

查看nvm版本:https://github.com/nvm-sh/nvm

复制代码
# 安装 NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
command -v nvm    # 验证NVM是否安装成功
# 使用NVM安装Node.js:
nvm install node  # 安装最新版
nvm install 16.14.2  # 安装指定版
# 使用 NVM 切换到安装的 Node.js 版本
nvm use node
nvm use node 16.14.2
# 验证安装:
node -v
npm -v
npx -v

安装受网络影响比较大。

3、centos7源代码安装node

node安装版本:node-v22.12.0.tar.gz

centos:CentOS Linux release 7.9.2009 (Core),最小化安装系统。

复制代码
# 安装依赖:
yum  -y groupinstall 'Development Tools'
yum install -y gcc-c++ make openssl-devel
# node版本过高,要求python最低版本是3.8
#下载源包:https://www.python.org/ftp/python,yum安装提示没有,要不网络不行。
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
tar -xvf Python-3.10.1.tar.xz
cd Python-3.10.1
./configure --enable-optimizations
make -j 8
make altinstall  #使用altinstall而不是install可以防止覆盖默认的系统python二进制文件
python安装到了/usr/local/bin/python3.10

下载源代码:https://nodejs.org/zh-cn/download/prebuilt-binaries

复制代码
tar -xvf node-v22.12.0.tar.gz
cd node-v22.12.0
mkdir /usr/local/nodejs
# bin执行目录,lib库目录,include头文件目录,share共享数据目录
export PYTHON=/usr/local/bin/python3.10
./configure
make -j 10
make install

# 若安装失败了,可以使用make clean,再重新配置编译和安装。

总的来说,安装还是挺麻烦的,遇到了好多好多问题,有时一个问题多次出现,要想源码安装最新的node,最好换更高版本的linux。

**遇到报错:**C++ compiler (CXX=g++, 4.8.5) too old, need g++ 10.1.0 or clang++ 8.0.0

解决问题:升级C++编译器

复制代码
#下载gcc:https://ftp.gnu.org/gnu/gcc/
tar -xvf gcc-11.2.0.tar.gz
cd gcc-11.2.0
# 更换下载源:
vi /root/gcc-11.2.0/contrib/download_prerequisites
http://gcc.gnu.org/pub/gcc/infrastructure/ 更换为:http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/
# 下载依赖及配置文件:yum -y install bzip2
./contrib/download_prerequisites
# 配置gcc
./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j 4   # 执行时间还是挺久的,需要50分钟左右。
# 卸载旧版本:
yum -y remove gcc g++
# 安装:
make install
export PATH=/usr/local/bin:$PATH
gcc -v
# 配置新版本全局可用:
ln -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/bin/g++ /usr/bin/g++
# 更新动态库:
#查看当前的动态库
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6
#查看更新后的动态库
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
# 安装后的动态库会位于/usr/local/lib64目录下,
#其他版本在该目录下寻找对应的动态库libstdc++.so.6.X.XX

又遇到问题:

/tmp/ccumRyCj.s:67543: 错误:no such instruction: `vpcompressw %zmm1,%zmm7{%k2}{z}'

解决问题:更新binutils

复制代码
# 下载最新的binutils源代码:https://ftp.gnu.org/gnu/binutils/
# 解压下载的文件
tar -xvf binutils-2.43.tar.xz
cd binutils-2.43
./configure --prefix=/usr/local
make
make install
# 更新动态链接器缓存
sudo ldconfig
as --version

**又又遇到问题:**make[1]: cc:命令未找到

export PATH=$PATH:/usr/local/bin

ln -s /usr/local/bin/gcc /usr/local/bin/cc

ln -s /usr/local/bin/gcc /usr/bin/cc

又又又有遇到问题了:/root/node-v22.12.0/out/Release/icupkg: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/node-v22.12.0/out/Release/icupkg)

export CC=/usr/local/bin/gcc

export CXX=/usr/local/bin/g++

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

又又又又有遇到问题了:/deps/cares/src/lib/util/ares_rand.c:37:12: 致命错误:sys/random.h:没有那个文件或目录 37 | # include <sys/random.h

复制代码
wget https://github.com/c-ares/c-ares/releases/download/v1.34.3/c-ares-1.34.3.tar.gz
tar -xvf c-ares-1.34.3.tar.gz 
cd c-ares-1.34.3
./configure 
make -j 4
make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH 
pkg-config --exists --print-errors libcares   # 没有错误信息输出,那么pkg-config能够找到c-ares

又又又又又有遇到问题了:/deps/cares/src/lib/util/ares_rand.c:37:12: 致命错误:sys/random.h:没有那个文件或目录 37 | # include <sys/random.h

vi /root/node-v22.12.0/deps/cares/src/lib/util/ares_rand.c

//# include <sys/random.h> 用//注释掉

又又又又又又有遇到问题了:make[1]: *** [/root/node-v22.12.0/out/Release/obj/gen/icudt76l.dat] 错误 1

yum install libicu-devel

上面的源码安装时间长,问题多。不好搞。

4、centos8预构建二进制文件安装node

node安装版本:node-v16.20.2-linux-x64.tar.xz

centos8:CentOS Linux release 8.5.2111(最小化安装)

复制代码
yum  -y groupinstall 'Development Tools'
# 使用wget下载最新的Node.js版本(请替换为实际的版本号)
wget https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz
tar -xJvf node-v16.20.2-linux-x64.tar.xz
mv node-v16.20.2-linux-x64 /usr/local/node
echo 'export PATH=/usr/local/node/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证安装
node -v
npm -v

5、centos8源代码安装node

node安装版本:node-v16.20.2.tar.gz

centos8:CentOS Linux release 8.5.2111(最小化安装)

复制代码
# 安装依赖:
yum  -y groupinstall 'Development Tools'
yum install -y gcc-c++ make openssl-devel
yum install -y python39

下载源代码:https://nodejs.org/zh-cn/download/prebuilt-binaries

复制代码
mkdir /usr/local/nodejs
tar -xvf node-v16.20.2.tar.gz
cd node-v16.20.2
./configure --prefix=/usr/local/nodejs
make -j 10
make install

vi ~/.bashrc
export PATH=/usr/local/nodejs/bin:$PATH
source ~/.bashrc

# 验证安装
node -v
npm -v
相关推荐
飞雪200711 分钟前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪34 分钟前
关于Linux内核中头文件问题相关总结
linux
你的人类朋友3 小时前
【Node&Vue】JS是编译型语言还是解释型语言?
javascript·node.js·编程语言
Lovyk3 小时前
Linux 正则表达式
linux·运维
Fireworkitte4 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9004 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char5 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘126 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
Orange3015117 小时前
《深入源码理解webpack构建流程》
前端·javascript·webpack·typescript·node.js·es6
华强笔记9 小时前
Linux内存管理系统性总结
linux·运维·网络