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. 项目开发管理最佳实践之一 --定义异常类exceptions

    项目开发中,经常遇到需要抛出异常情况,可以根据项目存在情况定一个异常类,项目以django ,rest_framework为例 1 rom django.db.models.deletion impo ...

  2. 探索Rust:所有权和借用的魅力与应用

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  3. manim变换效果总结

    在ManimCE中,除了上一篇介绍的丰富的动画效果外,变换效果也是制作精彩视觉内容的重要工具. 变换效果主要用于改变对象的形状.大小.颜色或位置,让对象在动画中呈现出动态的变化. 本文详细总结了 Ma ...

  4. 【ASP.NET Core】调用 Web API 备份数据库

    老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前.啊,大海啊,全是水:时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目.也许是现在大环境真 ...

  5. Prompt 生产及提示词案例(含完整提示词)

    场景一:格式文本提取提示词 # 角色 Role - 你是一个高度精确的文本提取代理. # 背景 Background - 你将接收到两段不同的文本: 1. 一份**按序号排列的列表**,详细说明了需要 ...

  6. 「Log」2023.8.23 小记

    序幕 \(\texttt{7:45}\):晚起到校,补博客. 从今天开始坚持不喝饮料. 写串串. \(\color{blueviolet}{P4248\ [AHOI2013]\ 差异}\) 神奇的.式 ...

  7. Druid监控页面配置

    springboot的yml配置文件添加如下配置: spring: # 数据库连接相关配置 datasource: druid: filters: stat,wall stat-view-servle ...

  8. ChatMoney智能体高情商接话神器

    本文由 ChatMoney团队出品 会说话是一个人的优势,而会接话才是一个人的本事.现实中很多人有这样的困扰:朋友聚会.上门拜访以及和人聊天.是不是完全不知道如何回应,只会说"嗯" ...

  9. AI 实战:一键生成数字人视频!

    做自媒体行业的同学都知道,制作一条可发布的视频成本是很高的,通常我们需要先录制原始视频,而录制原始视频的时间通常是发布视频时长的 3-5 倍,之后还需要花费很长的时间剪辑,最终才能制作一条可发布的视频 ...

  10. Kong入门学习实践(1)基础概念快览

    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看.由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版. 什么是Kong? Ko ...