在新磁盘挂载点/data安装codex
实例是Oracle Cloud Always FreeVM.Standard.E2.1.Micro Linux,/data目录。Codex CLI 官方支持用 npm 安装npm i -g openai/codex首次运行需要登录 ChatGPT 或配置 API key建议Codex 安装到/databubblewrap 用系统包安装到/usr/bin/bwrap。因为 bubblewrap 涉及 Linux namespace / sandbox 权限用发行版包最稳。0. 检查/datadf -h /datamount | grep ’ /data ’ || true更改权限 bash sudo chown -R $USER:$USER /data chmod 755 /data如果看到/data挂载参数里有noexecCodex 二进制可能无法执行需要改成可执行挂载sudomount-oremount,exec /data1. 安装基础依赖Ubuntu / Debian 系sudoaptupdatesudoaptinstall-ycurlgittargzipunzipxz-utils ca-certificates2. 把 Node.js 装到/dataCodex CLI 可通过 npm 全局安装npm 包会安装openai/codex并提供codex命令。 [developers…openai.com], [npmjs.com]这里用nvm 安装 Node.js 到/data/.nvm避免占用系统盘。a,#设置一个名为 NVM_DIR 的环境变量。exportNVM_DIR/data/nvmmkdir-p$NVM_DIR# | bash通过“管道”把下载的内容直接交给 Bash 解释器去运行。# ? 这个脚本下载在当前目录吗不是 .nvm 文件夹curl-o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh|bash其中curl -o …/install.sh |bash 是 NVM 官方提供的标准安装脚本执行命令。它的流程如下下载脚本curl 会从 GitHub 的官方仓库地址下载 install.sh 安装脚本.通过管道传递中间的竖线符号 | 会将下载好的脚本内容直接“喂”给 bash 解释器。自动执行安装bash 会立即运行这些脚本内容完成以下操作将 NVM 的核心源代码克隆git clone到你的 NVM_DIR 目录中。[2, 3]尝试自动在你的配置文件如 ~/.bashrc 或 ~/.zshrc中添加加载 NVM 的环境变量代码。因为在这条命令之前已经执行了 export NVM_DIR/data/.nvm所以这个 install.sh 脚本在运行时会聪明地识别出这个变量并放弃默认的 ~/.nvm 路径直接把所有东西安装到你指定的 /data/.nvm 下。b让当前 shell 生效exportNVM_DIR/data/nvm[-s$NVM_DIR/nvm.sh].$NVM_DIR/nvm.sh这是用于在 Shell 环境中加载 NVMNode Version Manager的配置代码。它通常出现在 .bashrc、.zshrc 或脚本开头。可以把它拆解成三个部分来理解aa. export NVM_DIR/data/.nvm作用设置一个名为 NVM_DIR 的环境变量。含义告诉系统 NVM 的程序和管理的所有 Node.js 版本都存放在 /data/.nvm 这个目录下。注意默认通常是 $HOME/.nvm这里显式指定到了 /data/.nvm可能是为了节省系统盘空间或统一数据存放。bb. [ -s “$NVM_DIR/nvm.sh” ]作用这是一个条件判断。含义检查 $NVM_DIR/nvm.sh 这个文件是否存在且其文件大小大于 0即不是空文件。目的确保 NVM 的核心脚本文件是有效的避免后面执行时报错。cc. . “$NVM_DIR/nvm.sh”逻辑“与”。只有当前面的判断文件存在且非空为真时才会执行后面的命令。.\在这里是取消.在shell下的alias因为很少人改.的意思所以这里不加\也行这是 source 命令的简写。前面的反斜杠 \ 是为了防止别名alias干扰确保执行的是原生的 Shell 命令。含义运行加载nvm.sh 脚本。加载后你的终端才能识别 nvm 这个命令从而可以切换 Node 版本。dd, 通俗总结这段代码的意思是“先把 NVM 的家目录定在 /data/.nvm如果发现这个目录里确实有 NVM 的启动脚本就立刻运行它。”执行完这一行后你就可以在终端里愉快地使用 nvm install 或 nvm use 了。c,安装 Node.js LTSnvminstall--ltsnvm use--ltsnode-vnpm-v写入~/.bashrccat~/.bashrcEOF # Node.js via nvm under /data export NVM_DIR/data/nvm [ -s $NVM_DIR/nvm.sh ] . $NVM_DIR/nvm.sh EOF3. 把 npm 全局包目录放到/datamkdir-p/data/npm-globalnpmconfigsetprefix /data/npm-global写入 PATHcat~/.bashrcEOF # npm global binaries under /data export PATH/data/npm-global/bin:$PATH EOFexportPATH/data/npm-global/bin:$PATH确认npmconfig get prefixecho$PATH4. 安装 Codex CLI 到/datanpminstall-gopenai/codex验证whichcodex codex--version正常情况下应该显示类似/data/npm-global/bin/codex运行codex首次运行会提示登录官方文档说明可用 ChatGPT 账号登录或使用 API key。 [developers…openai.com], [npmjs.com]如果你想用 API keycat~/.bashrcEOF # OpenAI API key for Codex export OPENAI_API_KEY你的_API_KEY EOFexportOPENAI_API_KEY你的_API_KEY5. 把 Codex 配置也放到/data可选但推荐Codex 默认配置一般在~/.codex。如果你的系统盘很小可以软链到/datamkdir-p/data/codex-configif[-d~/.codex][!-L~/.codex];thenmv~/.codex /data/codex-config/home-codex-backupfiln-sfn/data/codex-config ~/.codex验证ls-ld~/.codex6. 安装 bubblewrapBubblewrap 是 Linux 下常用的低层 sandbox 工具命令通常是bwrapOracle Linux 8 的官方 BaseOS 仓库提供bubblewrap包安装后会有/usr/bin/bwrap。 [github.com], [oraclelinux.pkgs.org]Oracle Linux / RHEL 系sudodnfinstall-ybubblewrap验证whichbwrap bwrap--versionUbuntu / Debian 系sudoaptinstall-ybubblewrap验证whichbwrap bwrap--version7. 测试 bubblewrap 是否可用bwrap\--ro-bind /usr /usr\--symlinkusr/bin /bin\--symlinkusr/lib64 /lib64\--proc/proc\--dev/dev\--tmpfs/tmp\--unshare-pid\bash-lcecho bwrap OK; uname -a如果成功会输出bwrap OK Linux ...8. 测试 Codex进入一个项目目录不建议直接在$HOME根目录运行mkdir-p/data/projects/test-codexcd/data/projects/test-codex codex或者非交互测试codexexec创建一个 hello.py运行后打印 hello from codex9. 如果你强制想把 bubblewrap 也编译到/data一般不推荐系统包更安全稳定。但如果你确实想放到/data/local/bin/bwrap可以这样做。Bubblewrap 官方源码使用 Meson 构建系统也可以从源码安装。 [github.com], [deepwiki.com]Oracle Linux / RHEL 系依赖sudodnfinstall-ygitgcc meson ninja-build pkgconf-pkg-config libcap-devel libselinux-devel编译安装到/data/localmkdir-p/data/src /data/localcd/data/srcgitclone https://github.com/containers/bubblewrap.gitcdbubblewrap meson setup build--prefix/data/local meson compile-Cbuild mesoninstall-Cbuild加入 PATHcat~/.bashrcEOF # local binaries under /data export PATH/data/local/bin:$PATH EOFexportPATH/data/local/bin:$PATH验证whichbwrap bwrap--version如果 Codex 或其他程序只找/usr/bin/bwrap可以建软链sudoln-sf/data/local/bin/bwrap /usr/local/bin/bwrap10. 常见问题1codex: command not found执行source~/.bashrcexportPATH/data/npm-global/bin:$PATHwhichcodex2npm install -g openai/codex权限错误确认 npm prefixnpmconfig get prefix如果不是/data/npm-globalnpmconfigsetprefix /data/npm-globalexportPATH/data/npm-global/bin:$PATHnpminstall-gopenai/codex3bwrap报 user namespace / permission 错误先检查sysctluser.max_user_namespaces2/dev/null||true如果是0尝试echouser.max_user_namespaces15000|sudotee/etc/sysctl.d/99-userns.confsudosysctl--system然后重新测试bwrap --dev-bind / /true4Oracle 免费小鸡内存小npm 安装慢或失败可以临时加 swapsudofallocate-l1G /swapfilesudochmod600/swapfilesudomkswap/swapfilesudoswapon/swapfilefree-h永久启用echo/swapfile none swap sw 0 0|sudotee-a/etc/fstab最小命令汇总版如果你已经有/data直接跑这组sudomkdir-p/datasudochown-R$USER:$USER/datasudodnf update-ysudodnfinstall-ycurlgittargzipunzipxzwhichca-certificates bubblewrapexportNVM_DIR/data/nvmmkdir-p$NVM_DIRcurl-o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh|bashexportNVM_DIR/data/nvm[-s$NVM_DIR/nvm.sh].$NVM_DIR/nvm.shnvminstall--ltsnvm use--ltsmkdir-p/data/npm-globalnpmconfigsetprefix /data/npm-globalexportPATH/data/npm-global/bin:$PATHnpminstall-gopenai/codexcat~/.bashrcEOF export NVM_DIR/data/nvm [ -s $NVM_DIR/nvm.sh ] . $NVM_DIR/nvm.sh export PATH/data/npm-global/bin:$PATH EOFcodex--versionbwrap--version如果实例是Ubuntu 镜像把dnf那行换成sudoaptupdatesudoaptinstall-ycurlgittargzipunzipxz-utils ca-certificates bubblewrap
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607678.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!