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安装指南的更多相关文章

  1. 八大最安全的Linux发行版,具备匿名功能,做服务器的首选,web,企业服务器等

    10 best Linux distros for privacy fiends and security buffs in 2017 Introduction The awesome operati ...

  2. 版本 ------- 2017年最受开发者欢迎的10个Linux发行版

    1.Arch Linux Arch Linux在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包.虽然这个选择对新手来说没有多大的帮助,但是它确实能够帮助那些使用Arch构建系统和存 ...

  3. 十款最常见的Linux发行版及目标用户(1)

    1. Debian Debian运行起来极其稳定,这使得它非常适合用于服务器.Debian平 时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubuntu和Kali等)带来了灵感.D ...

  4. Fedora 29 Linux发行版发布,新功能使Web开发人员的工作更方便

    Matthew Miller宣布发布Fedora 29.这个项目的最新版本是在Fedora Core 1发布后几乎整整15年才发布的,并且可以在多个版本中用于多个体系结构. 最新版本的Fedora已经 ...

  5. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  6. 2016 最佳 Linux 发行版排行榜

    2015年,不管在企业市场还是个人消费市场都是 Linux非常重要的一年.作为一个自2005年起就开始使用 Linux的 Linuxer ,我门见证了 Linux在过去十年的成长.2016 Linux ...

  7. 构建自己的 Linux 发行版

    如何用 SUSE Studio 构建 Linux 发行版? (1) 进入到 www.susestudio.com,设立一个帐户 (2) 为你的设备(发行版)选择一个基本模板 -软件和软件包选择 (1) ...

  8. linux发行版基础目录

    linux发行版基础目录 linux 基础目录 linux基础目录 目录 作用 / 根目录,起源 /boot linux引导启动目录 /lib 库目录 /bin 常用内部命令 /sbin 常用内部管理 ...

  9. 2016年最佳Linux发行版排行榜

    2015年,不管在企业市场还是个人消费市场都是 Linux 非常重要的一年. 最好的回归发行版:openSUSE openSUSE 背后的 SUSE 公司是最老的 Linux 企业,它成立于 Linu ...

  10. 最适合和最不适合新手使用的几款 Linux 发行版

    大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...

随机推荐

  1. Python实验4 列表与字典应用

    目的 :熟练操作组合数据类型. 试验任务: 基础:生日悖论分析.如果一个房间有23 人或以上,那么至少有两 个人的生日相同的概率大于50%.编写程序,输出在不同随机样本数 量下,23 个人中至少两个人 ...

  2. 使用 Linux 命令 curl 和 telnet 测试接口连通性

    摘要:接口可用性诊断利器curl和Telnet. 综述   Linux 中的命令 curl 是利用 URL 语法在命令行模式下工作的开源文件传输工具,它可以被用于测试API接口,查看响应头和发出HTT ...

  3. 【面试题】synchronized和Lock锁的区别

    synchronized是java内置关键字,是在JVM层面实现的:Lock是java的一个接口,是通过代码实现的,为具体的java类(java.util.concurrent.locks.Lock) ...

  4. 注解@Transactional事务失效的常见场景

    在<Spring Boot事务管理>中,小编介绍了注解@Transactional的基本属性和使用方法,这里介绍事务失效的八种场景,使大家对注解@Transactional有一个更深刻的认 ...

  5. 【深入理解Base64编码】原理、应用与Java实战

    深入理解Base64编码:原理.应用与Java实战 目录 1-什么是base64编码 2-base64编码原理详解 3-base64的java实现 4-高级应用与技巧 5-注意事项与常见误区 6-总结 ...

  6. 如何自建PT刷流盒子

    如何自建PT刷流盒子 选择机器 为了刷流我们最好选择大带宽.大容量的服务器,在这里我们简称大盘鸡 在这里为了方便演示我就拿Digital Ocean的一台服务器进行搭建,如果你要正式刷流了还是买个硬盘 ...

  7. ChatMoney让我重新找到创作灵感

    本文由 ChatMoney团队出品 今天是 2024 年 6月 19 日,星期三,哈喽大家好,我是一名乡野自媒体创作者小麦,基本上每天都会在自媒体的海洋中创作.重复着创作.创新.写稿.改稿.学习.复盘 ...

  8. update 批量修改sql 记录

    update_table 是要修改的表 join_table 是关联另一张表来修改update_table表的字段 update update_table set id= tmp.id from jo ...

  9. 【闲话 No.2】 长链剖分

    壱雫空 本来打算省选游记推这首歌的,但是省选破大防了,最后他来到了这里.感觉拿这个当起床铃效果一定很好(关键这歌超好听的!). もしこの雨が上がっても 忘れずに歩いてくよ 最初のひとしずくに 顔上げた ...

  10. AI应用实战课学习总结(10)用CNN做图像分类

    大家好,我是Edison. 最近入坑黄佳老师的<AI应用实战课>,记录下我的学习之旅,也算是总结回顾. 今天是我们的第10站,一起了解CNN卷积神经网络 以及 通过CNN做图像分类任务的案 ...