2026 年用 npm i -g 装 OpenClaw,日志里最常见的一行是 sharp 或别的原生依赖在「下载预编译失败 → 尝试本地编译」之间反复横跳。下文按原因 → SHARP_IGNORE_GLOBAL_LIBVIPS → 官方 install.sh 与 install-cli.sh 前缀路线 → 六地云 Mac 固化 → openclaw doctor 验收排好顺序,照着做能少一半无效重试。
一、sharp 为什么会「卡死」:不全是网络慢
sharp 优先用与当前 Node、macOS、CPU 架构匹配的预编译二进制;对不上就回退源码编译,此时会牵扯 libvips、C++ 工具链与磁盘 I/O。Apple Silicon 上若混进 arch -x86_64 或 Rosetta 下的 Node,架构不一致也会表现为 endless rebuild。先把 node -p process.arch 与 uname -m 对齐,再谈别的。
二、SHARP_IGNORE_GLOBAL_LIBVIPS=1:什么时候最省心
机器上若通过 Homebrew 装过全局 libvips,sharp 有时会尝试链接系统库,版本与 sharp 绑定矩阵不一致就会编译失败或运行期 ABI 异常。此时在仅安装 OpenClaw CLI的场景,把环境变量设为 1,让 sharp 走自带/预编译绑定,往往比「强行对齐 brew 版本」更快止血。若你明确要共用系统库,再反向操作:锁 brew 版本并查阅 sharp 官方兼容表,而不是反复清缓存。
三、install.sh、install-cli.sh 与 npm 全局:怎么选才不打架
install.sh适合新机或云 Mac 镜像:按官方顺序拉依赖、减少「缺 CLT、缺权限前缀」这类低级差异,和运维 playbook 最好写在一起。install-cli.sh(若发行版提供)更偏只铺 CLI 与约定前缀,适合你已用 nvm/fnm 钉好 Node.js 22、只想避免 npm 全局目录权限坑。npm -g最灵活但最吃纪律:统一 npm prefix、删掉 PATH 里旧的 openclaw、装完立刻 which openclaw 与文档对照。三条路不要混用半套,留一条为主,改完重启相关进程。
四、新加坡/日本/韩国/香港/美东/美西:云 Mac 固化环境清单
多区域Mac mini M4并行时,把下面几项写进同一套 Ansible/shell,避免「东京机过了、美西机又挂」:Node 22 路径、npm 全局前缀可写、可选的 SHARP_IGNORE_GLOBAL_LIBVIPS、Xcode CLT是否齐全、网关将要监听的端口与防火墙。控制台以离主交互团队最近的节点为主,跨区成员用 Tailscale 或 SSH 跳板补齐;并联席位时镜像磁盘水位与日志卷,避免 sharp 编译把根盘打满。
五、openclaw doctor 一页验收 FAQ(按顺序勾)
装完别先急着上业务,用 doctor 当门禁,下列每一项都应是「明确通过或有文档化例外」。
- Node 大版本是否与官方要求一致(当前世代多为 22),且
sudo与普通用户下版本相同? which openclaw是否指向你刚装的那条前缀,没有残留旧路径?- 若日志仍提 libvips,临时加上
SHARP_IGNORE_GLOBAL_LIBVIPS=1再跑一轮安装/doctor 是否消除? - 配置目录与工作目录是否与文档一致,plist 或 systemd/launchd 是否注入了相同环境变量?
- 网关端口与健康检查在本机与(如有)代理链路上是否一致放行?
更完整的 Node 22、install.sh 与 npm、网关 1008/channels 串联排错见 OpenClaw 从零安装到稳定在线 FAQ; 若你想绕过本机原生依赖、用容器钉死运行时,可对照 OpenClaw Docker Compose 部署与排错 把镜像与卷策略一次写清。
在 vpszap 云上,这一切更简单
固化 Node、sharp 与 OpenClaw CLI,最适合落在独享物理 M4 Mac mini上:无虚拟化争抢;约五分钟开通,SSH 与 VNC同交付,图形界面里点一次「同意 Xcode 条款」也比纯容器方便;按天/周/月/季计费、无长约;新加坡、东京、首尔、香港、美西、美东多节点可把环境放在离团队更近的延迟圈里。
若你要把本文的装机脚本与 doctor 门禁跑在贴近生产的 macOS 上,vpszap 云端 Mac mini 是试错成本很低的起点。