在Linux上无sudo安装用户级Node.js、npm与Codex的操作步骤

 更新时间:2026年11月09日 09:26:37   作者:不太聪明的椰羊  
在Linux多用户环境中,普通用户常因权限不足无法全局安装npm包,本文详细讲解如何无sudo安装用户级Node.js到$HOME/.local/node,并将npm全局目录设置为$HOME/.npm-global,彻底解决EACCES权限错误,跟着步骤操作,你还能顺利安装并启动Codex,全程无需管理员权限

适用场景

在 Linux 多用户环境中,普通用户通常没有系统目录写权限。当 npm 的全局安装目录指向 /usr/local 等系统目录时,直接执行 npm install -g 可能遇到 EACCES 权限错误。

本文适用于 Linux x86_64、Bash 环境。目标是在同一个 Bash 终端中,以普通用户身份完成以下操作:

  • 将 Node.js 安装到 $HOME/.local/node,目录名不带版本号(个人喜好);
  • 将 npm 全局安装目录设置为 $HOME/.npm-global;
  • 全程不使用 sudo;
  • 基于该环境安装并启动 Codex。

本文使用 Node.js 24.22.2 LTS。

这里的“用户级安装”指安装位置和配置属于当前用户。

1. 创建 Node.js 安装目录

mkdir -p "$HOME/.local/node"

2. 下载 Node.js 安装包

该安装包包含 Node.js 和 npm:

curl -fL --retry 3 https://nodejs.org/dist/v24.22.2/node-v24.22.2-linux-x64.tar.gz -o "$HOME/.local/node.tar.gz"

下载成功后再继续解压。

3. 解压到安装目录

使用 --strip-components=1 去掉压缩包内带版本号的顶层目录,使文件直接进入 $HOME/.local/node:

tar -xzf "$HOME/.local/node.tar.gz" -C "$HOME/.local/node" --strip-components=1

4. 让当前终端找到 Node.js 和 npm

将用户安装的 Node.js 命令目录放在 PATH 前面:

export PATH="$HOME/.local/node/bin:$PATH"

这会让当前终端优先使用该目录下的 Node.js 和 npm,不会卸载或替换系统中的版本。

5. 检查 Node.js 版本

node --version

预期输出:v24.22.2

也可以检查实际使用的命令位置:

command -v node

预期指向当前用户的 .local/node/bin/node。

6. 检查 npm 版本

npm --version

该命令应正常输出安装包附带的 npm 版本号,npm 的版本号不需要与 Node.js 相同。

7. 创建 npm 全局安装目录

mkdir -p "$HOME/.npm-global"

8. 设置 npm 全局安装位置

显式将配置写入当前用户的 npm 配置文件:

npm config set prefix "$HOME/.npm-global"

在默认配置下,用户配置文件是 $HOME/.npmrc。后续 npm 全局包及其命令链接会分别安装到:

$HOME/.npm-global/lib/node_modules
$HOME/.npm-global/bin

这可以规避因全局安装目录位于系统路径而产生的权限错误。

需要注意:该配置属于当前用户的 npm 配置,会影响该用户使用其他 Node.js/npm 安装时的全局安装位置,并非仅对这一次安装生效。

9. 将命令路径写入 Bash 配置

下面这条命令只需追加一次,重复执行会产生重复配置:

echo 'export PATH="$HOME/.local/node/bin:$HOME/.npm-global/bin:$PATH"' >> "$HOME/.bashrc"

10. 让配置立即生效

source "$HOME/.bashrc"

11. 安装 Codex

npm install -g @openai/codex

这里的 -g 表示安装到 npm 配置的全局目录。由于前面已修改 prefix,安装目标是当前用户的 $HOME/.npm-global,不需要 sudo。

12. 查看 Codex 命令位置

command -v codex

正常情况下,应看到类似:

/home/user_name/.npm-global/bin/codex

实际路径取决于当前用户的 $HOME。

13. 检查 Codex 版本

codex --version

正常输出版本号,说明当前终端能够找到并启动 Codex。

14. 启动 Codex

建议先进入需要操作的项目目录,再执行:

codex

说明与注意事项

  • 方案的核心是 用户级安装与用户级隔离:Node.js 安装在 $HOME/.local/node,npm 全局目录在 $HOME/.npm-global,不需要 sudo。
  • 它不是系统级共享安装。每个普通用户需要在自己的 $HOME 下独立执行;不同用户之间互不影响。
  • 将 npm 的 prefix 指向 $HOME/.npm-global,可以避免 npm install -g 向系统目录写入时出现权限错误,也避免污染系统环境。
  • source "$HOME/.bashrc" 只影响当前 Bash 会话;以后新开的终端会通过 .bashrc 自动加载 PATH。如果使用 zsh,应改为写入 ~/.zshrc,再执行 source "$HOME/.zshrc"。
  • 如果终端中仍找到旧版本 Node.js,可以重新打开终端,或执行 hash -r 清理命令缓存。
  • 下载的压缩包 $HOME/.local/node.tar.gz 在安装完成后可以按需删除。
  • 以上步骤均为个人实际使用记录

到此这篇关于在Linux上无sudo安装用户级Node.js、npm与Codex的操作步骤的文章就介绍到这了,更多相关Linux无sudo安装Node.js、npm与Codex内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 21个常用的apache .htaccess文件配置技巧分享

    21个常用的apache .htaccess文件配置技巧分享

    这篇文章主要介绍了21个常用的apache .htaccess文件配置技巧分享,涵盖了网站中最常用的一些功能需求解决办法,需要的朋友可以参考下
    2014-07-07
  • Linux下IP设置脚本的实例及遇到问题解决办法

    Linux下IP设置脚本的实例及遇到问题解决办法

    这篇文章主要介绍了Linux下IP设置脚本的实例及遇到问题解决办法的相关资料,需要的朋友可以参考下
    2017-07-07
  • Apache Doris基础简介

    Apache Doris基础简介

    Apache Doris 是一个现代化的 MPP(Massively Parallel Processing,即大规模并行处理)分析型数据库产品,这篇文章主要介绍了Apache-Doris基础概念,需要的朋友可以参考下
    2024-03-03
  • Linux系统下安装jdbc与tomcat的图文教程

    Linux系统下安装jdbc与tomcat的图文教程

    本文通过图文并茂的形式给大家介绍了Linux系统下安装jdbc与tomcat的方法,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧
    2018-01-01
  • linux使用openssl生成.crt.key.keystore

    linux使用openssl生成.crt.key.keystore

    文章主要详细介绍了使用`ssl.cncnf`生成RSA密钥、根据`key`和`cnf`生成CRT、生成自签证书、查看`.crt`详细信息以及生成`keystore`的方法,这些操作主要用于SSL证书的生成与配置,确保网络通信的安全性
    2026-04-04
  • linux crontab实例分析

    linux crontab实例分析

    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务
    2011-03-03
  • Linux之守护进程详解

    Linux之守护进程详解

    这篇文章主要介绍了Linux之守护进程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 详解基于Linux的LVM无缝磁盘水平扩容

    详解基于Linux的LVM无缝磁盘水平扩容

    这篇文章主要介绍了详解基于Linux的LVM无缝磁盘水平扩容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Linux下通过sed命令对kv方式的配置文件进行修改

    Linux下通过sed命令对kv方式的配置文件进行修改

    sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件。这篇文章主要介绍了Linux下通过sed命令对kv方式的配置文件进行修改,需要的朋友可以参考下
    2018-11-11
  • Linux切换用户的两种实现方式

    Linux切换用户的两种实现方式

    这篇文章主要介绍了Linux切换用户的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07

最新评论