跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    在 Fedora 上安装 Node.js:22 LTS 与 npm 全局目录的坑

    Fedora 的 Node.js 来自发行版仓库,版本跟着 Fedora 走,不是最新版——这正是它稳定的原因。

    Terminal window
    sudo dnf install nodejs npm

    F45 实测:

    nodejs-22.23.1-4.fc45.x86_64

    验证:

    Terminal window
    node -v
    npm -v
    v22.23.1
    10.9.8

    跑一行确认 V8 也正常:

    Terminal window
    node -e "console.log(process.versions.v8)"
    12.4.254.21-node.56
    Terminal window
    npm config get prefix
    /usr/local

    这意味着 npm install -g 会往 /usr/local/lib/node_modules 写,需要 sudo:

    Terminal window
    sudo npm install -g pnpm
    Terminal window
    mkdir -p ~/.npm-global
    npm config set prefix ~/.npm-global
    echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc

    之后 npm install -g 不再需要 sudo:

    Terminal window
    npm install -g pnpm
    pnpm -v

    这条命令会把 ~/.npmrc 写出来,重装系统后记得一起备份。

    Terminal window
    mkdir -p ~/hello && cd ~/hello
    npm init -y
    node -e "console.log('node', process.version)"

    装依赖、起服务:

    Terminal window
    npm install express
    cat > server.js <<'EOF'
    const express = require('express');
    const app = express();
    app.get('/', (req, res) => res.send('ok from ' + process.version));
    app.listen(3000, () => console.log('listening on 3000'));
    EOF
    node server.js

    另开一个终端:

    Terminal window
    curl -s http://127.0.0.1:3000/

    多版本:Fedora 原生就有 22 / 24 / 26

    Section titled “多版本:Fedora 原生就有 22 / 24 / 26”

    这是 Fedora 上最容易被忽略的一点——不需要 nvm,仓库里就并装多个 Node:

    Terminal window
    sudo dnf install nodejs24 nodejs26

    装完 /usr/bin 里会出现带版本后缀的可执行文件:

    Terminal window
    ls /usr/bin | grep -E "^node"
    node
    node-22
    node-24
    node-26

    各自报版本:

    Terminal window
    node -v # v22.23.1 ← 默认
    node-24 -v # v24.18.0
    node-26 -v # v26.3.1

    npm 也一样:

    Terminal window
    ls /usr/bin | grep -E "^npm"
    npm
    npm-22
    npm-24
    npm-26

    它们共享同一个全局 prefix(/usr/local),但各自的 npm-24 install -g 会解析到 24 的 node。

    包名提供的二进制实测版本
    nodejs(默认)node、node-22v22.23.1
    nodejs24node-24v24.18.0
    nodejs26node-26v26.3.1

    什么时候还需要 nvm:要 非整数大版本(比如 16.20.2)、要频繁切换且不想记后缀、或者要 EOL 版本(14/16)。Fedora 只提供当前受支持的几个大版本。

    Fedora 仓库只给一个版本(F45 是 22)。要 20 或 18:

    方式适用
    dnf install nodejs22 之类的版本化包仓库里有对应版本时最省事
    容器:podman run --rm node:20 node -v跑构建、跑测试
    nvm开发机多版本切换
    Terminal window
    dnf search nodejs | grep -E "^nodejs[0-9]+" # 看有没有版本化包
    podman run --rm node:20-alpine node -v

    不建议用第三方源(NodeSource 等)覆盖系统 nodejs——下次 dnf upgrade 容易出现文件冲突。

    现象原因
    npm install -g 报 EACCES全局目录 /usr/local 属 root,改 prefix 或加 sudo
    command not found: node只装了 nodejs 但 PATH 未刷新,重开 shell
    项目要求 Node ≥ 某版本仓库版本跟不上,用容器或 nvm
    全局包装了却找不到命令prefix 改了但 PATH 没加 ~/.npm-global/bin