不同Linux发行版Node安装指南
1. 使用包管理器安装
1.1 CentOS/RHEL
EPEL仓库方式(较旧版本)
# 安装EPEL仓库
sudo yum install epel-release -y
# 安装Node.js
sudo yum install nodejs -y
# 验证安装
node -v
# 完全卸载
sudo yum remove nodejs npm -y
sudo yum clean all
NodeSource仓库方式(推荐)
# 添加NodeSource仓库(以Node.js 20.x为例)
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
# 安装Node.js
sudo yum install -y nodejs
# 验证安装
node -v
npm -v
# 完全卸载
sudo yum remove -y nodejs
sudo rm -rf /etc/yum.repos.d/nodesource*.repo
sudo yum clean all
# 删除可能的残留文件
sudo rm -rf /usr/lib/node_modules
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm
1.2 Ubuntu/Debian
# 添加NodeSource仓库
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# 安装Node.js
sudo apt-get install -y nodejs
# 验证安装
node -v
npm -v
# 完全卸载
sudo apt-get purge -y nodejs
sudo apt-get autoremove -y
sudo rm -rf /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
# 删除残留文件
sudo rm -rf /usr/lib/node_modules
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm
2. 使用NVM安装(推荐)
NVM (Node Version Manager) 允许在同一系统上安装和管理多个Node.js版本。
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 加载NVM环境(或重新打开终端)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# 查看可用的Node.js版本
nvm list-remote
# 安装特定版本的Node.js
nvm install 20.19.4
# 切换Node.js版本
nvm use 16.20.2
# 设置默认版本
nvm alias default 20.19.4
# 验证安装
node -v
npm -v
# 卸载特定版本
nvm uninstall 20.19.4
# 完全卸载NVM及所有Node.js版本
rm -rf ~/.nvm
# 从 ~/.bashrc, ~/.zshrc, ~/.profile 等文件中删除NVM相关行
# 例如删除以下类似行:
# export NVM_DIR="$HOME/.nvm"
# [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
3. 从源代码编译安装
3.1 安装依赖
# CentOS/RHEL
sudo yum groupinstall -y "Development Tools"
sudo yum install -y python3 gcc-c++ make openssl-devel
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y python3 g++ make libssl-dev
3.2 下载源代码
# 下载Node.js源代码
wget https://nodejs.org/dist/v20.19.4/node-v20.19.4.tar.gz
# 解压源代码
tar -xzf node-v20.19.4.tar.gz
# 进入源代码目录
cd node-v20.19.4
3.3 编译安装
# 配置编译选项(指定安装目录)
./configure --prefix=/usr/local/node
# 编译(使用多核加速)
make -j$(nproc)
# 安装
sudo make install
# 配置环境变量
echo 'export PATH=/usr/local/node/bin:$PATH' | sudo tee /etc/profile.d/nodejs.sh
source /etc/profile.d/nodejs.sh
# 验证安装
node -v
npm -v
# 卸载源码编译安装的Node.js
sudo rm -rf /usr/local/node
sudo rm -f /etc/profile.d/nodejs.sh
# 重新登录终端或执行以下命令使环境变量更改生效
source /etc/profile
4. 系统要求与版本选择
4.1 系统要求
| Node.js版本 | 最低系统要求 |
|---|---|
| Node.js 20.x | CentOS/RHEL 8+, Ubuntu 20.04+, GCC 10+ |
| Node.js 18.x | CentOS/RHEL 7+, Ubuntu 18.04+, GCC 8+ |
| Node.js 16.x | CentOS/RHEL 7+, Ubuntu 16.04+, GCC 6+ |
4.2 版本选择建议
生产环境:优先选择LTS(长期支持)版本
开发环境:可以使用最新的Current版本
旧系统:CentOS 7等旧系统建议使用Node.js 16.x
5. 故障排除
5.1 权限问题
# 解决全局包安装权限问题
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
5.2 依赖问题
CentOS 7编译错误:如果遇到C++编译器版本过旧错误,可使用devtoolset:
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
source /opt/rh/devtoolset-10/enable
# 然后再次尝试编译
库版本不兼容:如果出现GLIBC或GLIBCXX版本错误,建议使用NVM安装兼容的Node.js版本。
5.3 卸载检查
# 检查是否有残留Node.js文件
which node
which npm
# 查找可能的残留文件
find /usr -name "*node*"
find /usr/local -name "*node*"
find /opt -name "*node*"
# 检查全局npm包
ls -la /usr/lib/node_modules
ls -la /usr/local/lib/node_modules
# 检查环境变量中的Node.js相关路径
echo $PATH | tr ':' '\n' | grep -i node
# 检查配置文件中的Node.js相关设置
grep -r "node" ~/.bashrc ~/.profile /etc/profile /etc/profile.d/
6. 完全卸载Node.js的通用步骤
无论使用何种方式安装,以下步骤可以帮助彻底清除Node.js:
# 1. 使用相应的包管理器卸载
# 对于yum/dnf:
sudo yum remove -y nodejs npm
# 对于apt:
sudo apt-get purge -y nodejs npm
# 2. 删除NVM(如果使用了NVM)
rm -rf ~/.nvm
# 从配置文件中删除NVM相关行
# 3. 删除源码安装的Node.js
sudo rm -rf /usr/local/node
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/bin/npm
sudo rm -f /etc/profile.d/nodejs.sh
# 4. 删除全局npm包和缓存
sudo rm -rf /usr/lib/node_modules
sudo rm -rf /usr/local/lib/node_modules
rm -rf ~/.npm
# 5. 删除Node.js配置文件
rm -rf ~/.node-gyp
rm -f ~/.npmrc
# 6. 检查并删除其他可能的安装位置
sudo rm -rf /opt/node
# 7. 更新系统缓存
# 对于yum/dnf:
sudo yum clean all
# 对于apt:
sudo apt-get update
# 8. 检查是否完全删除
which node
which npm
不同Linux发行版Node安装指南的更多相关文章
- 八大最安全的Linux发行版,具备匿名功能,做服务器的首选,web,企业服务器等
10 best Linux distros for privacy fiends and security buffs in 2017 Introduction The awesome operati ...
- 版本 ------- 2017年最受开发者欢迎的10个Linux发行版
1.Arch Linux Arch Linux在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包.虽然这个选择对新手来说没有多大的帮助,但是它确实能够帮助那些使用Arch构建系统和存 ...
- 十款最常见的Linux发行版及目标用户(1)
1. Debian Debian运行起来极其稳定,这使得它非常适合用于服务器.Debian平 时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubuntu和Kali等)带来了灵感.D ...
- Fedora 29 Linux发行版发布,新功能使Web开发人员的工作更方便
Matthew Miller宣布发布Fedora 29.这个项目的最新版本是在Fedora Core 1发布后几乎整整15年才发布的,并且可以在多个版本中用于多个体系结构. 最新版本的Fedora已经 ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- 2016 最佳 Linux 发行版排行榜
2015年,不管在企业市场还是个人消费市场都是 Linux非常重要的一年.作为一个自2005年起就开始使用 Linux的 Linuxer ,我门见证了 Linux在过去十年的成长.2016 Linux ...
- 构建自己的 Linux 发行版
如何用 SUSE Studio 构建 Linux 发行版? (1) 进入到 www.susestudio.com,设立一个帐户 (2) 为你的设备(发行版)选择一个基本模板 -软件和软件包选择 (1) ...
- linux发行版基础目录
linux发行版基础目录 linux 基础目录 linux基础目录 目录 作用 / 根目录,起源 /boot linux引导启动目录 /lib 库目录 /bin 常用内部命令 /sbin 常用内部管理 ...
- 2016年最佳Linux发行版排行榜
2015年,不管在企业市场还是个人消费市场都是 Linux 非常重要的一年. 最好的回归发行版:openSUSE openSUSE 背后的 SUSE 公司是最老的 Linux 企业,它成立于 Linu ...
- 最适合和最不适合新手使用的几款 Linux 发行版
大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...
随机推荐
- Python实验4 列表与字典应用
目的 :熟练操作组合数据类型. 试验任务: 基础:生日悖论分析.如果一个房间有23 人或以上,那么至少有两 个人的生日相同的概率大于50%.编写程序,输出在不同随机样本数 量下,23 个人中至少两个人 ...
- 使用 Linux 命令 curl 和 telnet 测试接口连通性
摘要:接口可用性诊断利器curl和Telnet. 综述 Linux 中的命令 curl 是利用 URL 语法在命令行模式下工作的开源文件传输工具,它可以被用于测试API接口,查看响应头和发出HTT ...
- 【面试题】synchronized和Lock锁的区别
synchronized是java内置关键字,是在JVM层面实现的:Lock是java的一个接口,是通过代码实现的,为具体的java类(java.util.concurrent.locks.Lock) ...
- 注解@Transactional事务失效的常见场景
在<Spring Boot事务管理>中,小编介绍了注解@Transactional的基本属性和使用方法,这里介绍事务失效的八种场景,使大家对注解@Transactional有一个更深刻的认 ...
- 【深入理解Base64编码】原理、应用与Java实战
深入理解Base64编码:原理.应用与Java实战 目录 1-什么是base64编码 2-base64编码原理详解 3-base64的java实现 4-高级应用与技巧 5-注意事项与常见误区 6-总结 ...
- 如何自建PT刷流盒子
如何自建PT刷流盒子 选择机器 为了刷流我们最好选择大带宽.大容量的服务器,在这里我们简称大盘鸡 在这里为了方便演示我就拿Digital Ocean的一台服务器进行搭建,如果你要正式刷流了还是买个硬盘 ...
- ChatMoney让我重新找到创作灵感
本文由 ChatMoney团队出品 今天是 2024 年 6月 19 日,星期三,哈喽大家好,我是一名乡野自媒体创作者小麦,基本上每天都会在自媒体的海洋中创作.重复着创作.创新.写稿.改稿.学习.复盘 ...
- update 批量修改sql 记录
update_table 是要修改的表 join_table 是关联另一张表来修改update_table表的字段 update update_table set id= tmp.id from jo ...
- 【闲话 No.2】 长链剖分
壱雫空 本来打算省选游记推这首歌的,但是省选破大防了,最后他来到了这里.感觉拿这个当起床铃效果一定很好(关键这歌超好听的!). もしこの雨が上がっても 忘れずに歩いてくよ 最初のひとしずくに 顔上げた ...
- AI应用实战课学习总结(10)用CNN做图像分类
大家好,我是Edison. 最近入坑黄佳老师的<AI应用实战课>,记录下我的学习之旅,也算是总结回顾. 今天是我们的第10站,一起了解CNN卷积神经网络 以及 通过CNN做图像分类任务的案 ...