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 installvi ~/.bashrc
export PATH=/usr/local/nodejs/bin:$PATH
source ~/.bashrc# 验证安装
node -v
npm -v

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DuckDB:精通Insert语句处理数据冲突

本文介绍DuckDB insert语句用法&#xff0c;包括常规的批量插入&#xff0c;尤其是插入数据冲突的处理&#xff0c;最后还提及returning子句的用法&#xff0c;每个用法提供示例说明。 insert插入数据 INSERT INTO向表中插入新行。可以插入由值表达式指定的一行或多行&#xf…

【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)

inode 和 block 的映射 该博文中有详细解释&#xff1a;【Linux系统】inode 和 block 的映射原理 目录与文件名 这里有几个问题&#xff1a; 问题一&#xff1a; 我们访问文件&#xff0c;都是用的文件名&#xff0c;没用过 inode 号啊&#xff1f; 之前总是说可以通过一个…

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用

SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用 文章目录 SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用一. 使用SpringBoot自带的定时任务&#xff08;适用于小型应用&#xff09;二. 使用调度框架…

flutter 使用google_mlkit_image_labeling做图片识别

在AI横行的如今&#xff0c;相信大家或多或少都做过跟AI接轨的需求了吧&#xff1f;今天我说的是关于图片识别的需求&#xff0c;flutter的专属图片识别插件google_mlkit_image_labeling。 google_mlkit_image_labeling它是Google旗下的Google Cloud Vision API中分支出来的一部…

国产编辑器EverEdit - 合并行

1 合并行 1.1 应用场景 在编写代码或其他场景下&#xff0c;有时需要把多行的内容缩减成一行&#xff0c;或者纯粹减少行数进行合并&#xff0c;比如&#xff1a;下面的字典的定义&#xff0c;每个元素占了一行&#xff0c;有点浪费&#xff0c;现在需要把它们缩减行数。 typ…

3 前端(中):JavaScript

文章目录 前言&#xff1a;JavaScript简介一、ECMAscript&#xff08;JavaScript基本语法&#xff09;1 JavaScript与html结合方式&#xff08;快速入门&#xff09;2 基本知识&#xff08;1&#xff09;JavaScript注释&#xff08;和Java注释一样&#xff09;&#xff08;2&am…

RIME-CNN-LSTM-Attention多变量多步时序预测Matlab实现

SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-LSTM-Multihead-Attention霜冰算法…

一文读懂服务器的HBA卡

什么是 HBA 卡 HBA 卡&#xff0c;全称主机总线适配器&#xff08;Host Bus Adapter&#xff09; &#xff0c;是服务器与存储装置间的关键纽带&#xff0c;承担着输入 / 输出&#xff08;I/O&#xff09;处理及物理连接的重任。作为一种电路板或集成电路适配器&#xff0c;HBA…

mfc操作json示例

首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…

综述:大语言模型在机器人导航中的最新进展!

简介 机器人导航是指机器人能够在环境中自主移动和定位的能力。本文系统地回顾了基于大语言模型&#xff08;LLMs&#xff09;的机器人导航研究&#xff0c;将其分为感知、规划、控制、交互和协调等方面。具体来说&#xff0c;机器人导航通常被视为一个几何映射和规划问题&…

owasp SQL 注入-03 (原理)

1: 先看一下注入界面: 点submit 后&#xff0c;可以看到有语法报错&#xff0c;说明已经起作用了: 报如下的错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 2:…

Vscode:问题解决办法 及 Tips 总结

Visual Studio Code&#xff08;简称VSCode&#xff09;是一个功能强大的开源代码编辑器&#xff0c;广泛用于各种编程语言和开发场景&#xff0c;本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法&#xff0c;使用过程中的技巧 文章目录 扩展安装失败调试配…

Linux(NFS服务)

赛题拓扑&#xff1a; 题目&#xff1a; NFS&#xff1a; 共享/webdata/目录。用于存储AppSrv主机的WEB数据。仅允许AppSrv主机访问该共享。 [rootstoragesrv ~]# yum install nfs-utils -y [rootstoragesrv ~]# mkdir /webdata [rootstoragesrv ~]# chmod -R ow /webdata …

c.p.api.config.MyAuthenticationProvider

文章目录 1、URL1、AdminController3、AuthenticationProvider 2025-01-15 14:21:31.017 WARN 1972 --- [nio-8087-exec-8] c.p.api.config.MyAuthenticationProvider : 管理员:13524972741 登录失败:密码错误解释: 时间戳: 2025-01-15 14:21:31.017 - 表示日志记录的时间…

C++ 模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

设置 Git 默认推送不需要输入账号和密码【Ubuntu、SSH】

如何设置 Git 默认推送不需要输入账号和密码 在使用 Git 管理代码时&#xff0c;许多开发者会遇到每次推送&#xff08;push&#xff09;或拉取&#xff08;fetch&#xff09;代码时都需要输入 GitHub 或 GitLab 等远程仓库的账号和密码的情况。虽然设置了用户名和电子邮件信息…

【ArcGIS微课1000例】0140:总览(鹰眼)、放大镜、查看器的用法

文章目录 一、总览工具二、放大镜工具三、查看器工具ArcGIS中提供了三种局部查看的工具: 总览(鹰眼)、放大镜、查看器,如下图所示,本文讲述这三种工具的使用方法。 一、总览工具 为了便于效果查看与比对,本实验采用全球影像数据(位于配套实验数据包中的0140.rar中),加…

Vue3数据响应式原理

什么是数据响应式 当数据变化时&#xff0c;引用数据的函数&#xff08;副作用函数&#xff09;自动重新执行。 即数据触发了函数的响应&#xff0c;如&#xff1a;视图渲染中使用了某数据&#xff0c;数据改变后&#xff0c;视图跟着自动更新。 触发者&#xff1a;数据 响应者…

机器学习06-正则化

机器学习06-正则化 文章目录 机器学习06-正则化0-核心逻辑脉络1-参考网址3-大模型训练中的正则化1.正则化的定义与作用2.常见的正则化方法及其应用场景2.1 L1正则化&#xff08;Lasso&#xff09;2.2 L2正则化&#xff08;Ridge&#xff09;2.3 弹性网络正则化&#xff08;Elas…

springboot学生成绩管理系统

Spring Boot学生成绩管理系统是一个基于Spring Boot框架开发的&#xff0c;旨在帮助教育机构、学校或教师高效管理学生成绩的系统。 一、系统背景与意义 在教育领域&#xff0c;学生成绩的管理是一项重要且繁琐的工作。传统的手工管理方式不仅效率低下&#xff0c;还容易出错…