2026 年 OpenClaw 安装路径怎么选?install.sh、npm、pnpm 源码与 Docker 对照 + Mac 云 launchd 验收
在 Mac 云或本机长期跑 OpenClaw,在官方脚本、npm -g、pnpm 与 Docker 间犹豫时:本文说明受众与收益(可审计升级、可复现常驻),含对照表、五步 launchd 验收、Docker 卷清单,以及装完起不来的第一层检查(JSON 与 18789),与站内 doctor 阶梯文互补。
本文要点
1. 导语摘要:四条路径分别解决什么问题
官方 install.sh把 CLI 与引导流程收敛到一条命令,适合 PoC;须弄清二进制与配置落盘路径以便对接 launchd。npm install -g openclaw@latest升级语义清晰,适合 SSH 单机运维。源码 pnpm 构建适合跟上游与打补丁,代价是版本纪律。Docker提供边界与冻结,但在 macOS 上要处理卷映射与 uid。常见坑是 PoC 脚本直接套生产却未改 WorkingDirectory 与日志路径。下文列痛点、对照表与 launchd 顺序。
2. 痛点拆解:选错介质会怎样
- 升级语义不一致:
npm与pnpm锁文件、全局前缀与install.sh下载的静态包可能并存,导致openclaw --version与 Gateway 实际二进制不一致。 - Docker 卷与宿主钥匙串/配置分裂:只挂 workspace 不挂
~/.openclaw时,容器内生成的配置在宿主机工具链里不可见;反之一旦 uid 不匹配,会出现「日志写不进卷」的静默失败。 - 无 daemon 计划:SSH 里前台跑 Gateway 在断开会话后退出;没有
launchd或等价的 plist,Mac 云重启后服务不会回来,监控也无从附着。 - 排障入口混乱:尚未确认
openclaw.json语法与 18789 是否被占用就深入通道 pairing,会浪费数小时;第一层应与官方 FAQ 同步。
3. 对照表:升级、目录、权限与排障入口
下表可贴进架构说明;排障入口指安装介质层第一站,与 status→doctor 阶梯区分。
| 路径 | 升级方式 | 典型目录 | 权限/卷注意 | 安装后第一站排障 |
|---|---|---|---|---|
install.sh | 重跑脚本 | 用户 bin + 配置目录 | PATH / profile | openclaw --version |
npm -g | npm update -g | 全局前缀 + ~/.openclaw | nvm 等切前缀 | 与 launchd 环境一致 |
| pnpm 源码 | pull + build + link | 克隆目录 | 依赖体积 | pnpm 退出码 |
| Docker | 新镜像 / compose | 容器 + 卷 | uid、DNS | compose logs + 卷可读 |
实践提示:在 plist 或 compose 里显式写
HOME、PATH、WorkingDirectory,避免重启丢环境。
4. 落地步骤:Mac 云 launchd 五步验收
假设已完成 openclaw onboard 或等价初始化,目标为可复现常驻:
- 冻结介质:在 Runbook 写明当前选用的是脚本、npm、pnpm 还是 Docker,并记录版本号或镜像 digest。
- 写入 LaunchAgent plist:使用绝对路径调用
openclaw gateway或文档推荐的 daemon 子命令;StandardOutPath/StandardErrorPath指向固定日志文件。 - 加载并冷启动:
launchctl bootstrap对应域后执行launchctl kickstart,确认进程在重启后由launchd拉起而非终端子进程。 - 端口与配置快检:
lsof -i :18789与最小 JSON 校验(可用手动或openclaw doctor的 schema 检查),再测通道侧。 - 回滚演练:保留上一份可工作的全局包或镜像 tag;升级失败后能在目标 RTO 内切回并验证 Gateway 探针。
plist 骨架(路径与 Label 请替换):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.openclaw.gateway</string>
<key>ProgramArguments</key><array>
<string>/usr/local/bin/openclaw</string><string>gateway</string><string>run</string>
</array>
<key>WorkingDirectory</key><string>/Users/deploy</string>
<key>StandardOutPath</key><string>/var/log/openclaw/gateway.out</string>
<key>StandardErrorPath</key><string>/var/log/openclaw/gateway.err</string>
<key>RunAtLoad</key><true/>
</dict></plist>
5. 可引用技术信息:Docker 卷与 uid 清单
- 双卷最低集:同时映射
~/.openclaw与工作区目录,否则密钥与 workspace 状态会在容器重建时漂移。 - uid 1000 惯例:多数示例镜像以非 root 用户运行;宿主目录若属主为其他 uid,会出现写拒绝或半写入导致 JSON 损坏。
- DNS 与出口:企业 Mac 云常走代理;容器内
web_search类能力失败时,先在容器内curl探测,再对照宿主出口与白名单。 - 18789 争用:同一台 Mac 云上多个实验 Gateway 争用单端口时,后启动进程会静默退出或挂起,应先停旧 plist 再启新实例。
- 与 doctor 文:介质与 launchd 通过后,再用站内《status→doctor 阶梯》排通道。
- 审计:变更单记录介质、镜像 digest、
openclaw --version、plist Label。
6. 从试用到生产:为什么原生 Mac 云更省事
Windows/WSL 或嵌套虚拟化跑 OpenClaw 排障链更长;笔记本上 Docker 灵活,上生产 Mac 云常叠卷权限与性能折损。在可 SSH 的专用 Mac 云上用原生路径加 launchd,最易把装路径、拉起方、日志与回滚写进 Runbook;要隔离再用 Docker 分区。未完成首次上线可先读站内《OpenClaw 五分钟极速部署》再按本文定介质与 plist。