一、引言
Ubuntu下安装Node.js主要有两种方式:通过apt安装和通过源码安装。本文主要讲解通过apt安装Node.js 的方法。
二、通过apt安装Node.js
安装Node.js:
apt install
我之前已经安装过了,所以提示:“nodejs 已经是最新版”:

安装NPM:
apt install npm
我之前已经安装过了,所以提示:“npm 已经是最新版”:

查看Node.js版本:
node -v

查看npm版本:
npm -v
通过whereis命令可以看到Node.js和NPM被安装到/usr/local/bin目录下:

三、通过源码安装Node.js
相比于通过apt安装Node.js的方式,通过源码安装Node.js的灵活性更高,可以指定Node.js的安装目录,对源码进行裁剪,选择Node.js的版本。缺点是操作较麻烦,编译花费时间长。
首先在 下载 | Node.js 中文网 下载 Node.js源码,比如下载node-v22.16.0.tar.gz:
解压:
tar -zxvf node-v22.16.0.tar.gz
进入Node.js源码目录:
生成Makefile,指定安装到/usr/local/nodejs下:
./configure --prefix=/usr/local/nodejs
可能会报错:ModuleNotFoundError: No module named '_bz2'。这个错误表示python 3.10无法找到_bz2模块,导致configure无法正常运行:

如果出现上述错误,通过whereis命令查看Ubuntu安装了哪些其它版本的python:

可以看到python3.8/lib-dynload目录下有一个文件为:“_bz2.cpython-38-x86_64-linux-gnu.so”:
针对上述错误,有两个解决方法:
方法一:
将_bz2.cpython-38-x86_64-linux-gnu.so拷贝到/usr/local/lib/python3.10 /lib-dynload/目录下:
将/usr/local/lib/python3.10/lib-dynload/目录下的_bz2.cpython-38-x86_64-linux-gnu.so设置可执行权限:
修改_bz2.cpython-38-x86_64-linux-gnu.so名称为_bz2.cpython-10-x86_64-linux-gnu.so:
重新在Node.js源码目录下执行configure命令,观察错误是否消失。如果还是报上述错误,使用方法二。