Skip to content
Search CentOS Stream

This page uses Chinese content. Search opens the Chinese documentation.

    Browse this documentation

    安装 Node.js 并切换模块流版本

    This content is not available in your language yet.

    适用:CentOS Stream 9 / 10 · 核对日:2026-11-01 · 官方依据:仓库内包与模块元数据,容器实测(Stream 9 镜像 sha256:4fdfb36…,dnf 4.14.0;Stream 10 stream10 镜像,dnf 4.20.0)。

    Stream 9 上装 Node.js 有一个实测可见的坑:直接 dnf install nodejs 装到的是 16.20.2(已 EOL 的老版本),而模块流里的 18–26 一条都没启用。本页把这两层来源讲清楚并给出切换步骤。

    看默认安装会装到什么
    $ sudo dnf install nodejs --assumeno

    预期输出(关键行,实测摘录):

    nodejs aarch64 1:16.20.2-8.el9 appstream 112 k

    16.20.2 来自 AppStream 的非模块包。而模块化层里其实有多条流:

    查看 nodejs 模块流
    $ dnf module list nodejs

    预期输出(实测摘录,2026-11-01):

    Name Stream Profiles Summary
    nodejs 18 common [d], development, … Javascript runtime
    nodejs 20 common [d], development, … Javascript runtime
    nodejs 22 common [d], development, … Javascript runtime
    nodejs 24 common [d], development, … Javascript runtime
    nodejs 26 common [d], development, … Javascript runtime

    注意:[d] 标记的是每条流的默认 profile,不代表该流已启用。没有任何流处于 enabled 状态时,dnf 会落回那个非模块的 16.x 包——这就是默认安装装到旧版的机制。

    切换到新版本:先清旧包,再启用流

    Section titled “切换到新版本:先清旧包,再启用流”
    切换到 Node.js 22(完整顺序)
    $ sudo dnf remove nodejs nodejs-libs 'nodejs-*' 2>/dev/null
    $ sudo dnf module enable -y nodejs:22
    $ sudo dnf install nodejs
    $ node --version

    预期输出:

    v22.23.2

    实测中 enable nodejs:22 后重新 dnf install nodejs,解析目标变为 nodejs-1:22.23.2-1.module_el9+…(模块包)。切回其它版本同理:先移除已装的 nodejs,module enable nodejs:<版本>,再装。

    Stream 10:没有模块流,只有普通包

    Section titled “Stream 10:没有模块流,只有普通包”

    Stream 10 上 dnf install nodejs 直接得到 22.22.0(非模块包),dnf module list 输出为空、dnf 4.20.0 打出 modularity 弃用警告。module enable nodejs 这类命令在 Stream 10 上必然报 missing groups or modules。

    需要 Stream 10 之外的 Node 大版本时,用上游发行渠道(NodeSource 仓库、官方二进制包)或 nvm/fnm 这类版本管理器;用第三方仓库时注意它与 dnf 的优先级配置,参考仓库与滚动内容。

    验证当前生效的 Node 与来源
    $ node --version
    $ rpm -q --qf '%{NAME}-%{VERSION} (%{RELEASE})\n' nodejs

    回滚到系统默认(Stream 9):

    回到默认状态
    $ sudo dnf remove nodejs nodejs-libs
    $ sudo dnf module reset -y nodejs
    $ sudo dnf install nodejs # 又回到 16.20.2(非模块)

    module reset 清掉启用/安装状态标记,让模块层回到未启用。

    现象原因处理
    装完还是 16.x没启用模块流或没先移除非模块包按上面「先清旧包,再启用流」顺序执行
    module enable 报 missing groups or modules在 Stream 10 上执行(无模块化)用普通包或上游发行渠道
    node 与 npm 版本不配套混装了不同来源的包全部移除后按单一来源重装
    全局 npm 包丢失移除 nodejs 时一并被清切流后重新 npm install -g