macOS 12 安装 OpenClaw 全流程实战教程:从踩坑到跑通,一次讲透
2026-03-22
这篇教程,不是照着官网机械翻译出来的“标准答案”,而是基于我们昨天在一台 macOS 12 的 MacBook Air 上,真实一步一步排障、修复、安装 OpenClaw 的完整过程整理出来的实战版教程。
它最大的价值不在于“理论上怎么安装”,而在于:
你下一次再装的时候,可以直接照着做,尽量少走弯路。
尤其是那些我们已经踩过的坑,这次我会重点标出来,并把正确处理顺序写清楚。
这篇教程适合的人群是:
适合使用 macOS 12 的用户
适合中国大陆网络环境下安装 OpenClaw 的用户
适合之前装 Node、brew、GitHub 访问、npm 安装经常报错的用户
适合希望“从零开始,一步步照着执行就能跑通”的用户
一、先说最终结论:这次安装卡住的根因到底有哪些
我们这次安装 OpenClaw,表面上看像是“总在报错”,但本质上主要是以下几个问题叠加造成的。
1. Homebrew 访问 GitHub 原始资源失败
最早安装 Node 的时候,Homebrew 需要访问:
raw.githubusercontent.com
但这个域名在当前网络环境下访问不稳定,导致 brew install node 失败。
2. 终端里残留了错误代理配置
一开始终端里配了:
http_proxy=http://127.0.0.1:7890https_proxy=http://127.0.0.1:7890
但本机 7890 端口根本没有代理服务在运行,导致所有网络请求都被错误转发到一个不存在的代理上。
3. 多次重复执行 brew 命令,导致锁文件残留
前一个 brew install node 还没正常结束,又再次执行新的安装命令,导致 Homebrew 一直提示:
process has already locked
4. OpenClaw 的 Git 安装方式依赖 GitHub 仓库直连
使用 --install-method git 时,安装器会直接执行 git clone https://github.com/openclaw/openclaw.git,而当终端访问 GitHub 不稳定时,这一步直接失败。
5. npm 安装阶段又遇到依赖通过 SSH 拉 GitHub 仓库
OpenClaw 某个依赖不是走普通 npm 包下载,而是走:
ssh://git@github.com/...
这时如果本机没有配置 GitHub SSH Key,就会报:
Permission denied (publickey)
所以,这次整个安装过程不是一个单点问题,而是:
网络问题、brew 镜像问题、锁文件问题、npm 问题、Git SSH 问题一起叠加。
二、安装前你要先明白一个现实
macOS 12 不是最友好的环境
Homebrew 会提示:
你正在使用 macOS 12
这是一个较老的系统
支持层级较低
这并不代表一定装不上,但意味着:
你遇到兼容性、网络、依赖、下载问题的概率会比新系统更高。
重点提醒:macOS 12 不是不能装,而是更需要按顺序来,不能乱试、不能一边报错一边反复重装。
三、正确的整体安装顺序
下一次你重新装,请严格按这个顺序来:
第一步,处理终端网络环境
第二步,处理 Homebrew 国内镜像
第三步,安装并验证 Node
第四步,处理 npm 国内源
第五步,修复 GitHub SSH 依赖问题
第六步,安装 OpenClaw
第七步,执行 OpenClaw 初始化
这个顺序很重要。
很多人失败,不是因为命令不会,而是顺序错了。
四、第一步:先清理终端里的错误代理配置
我们这次一开始最大的坑之一,就是终端里有错误代理配置,但本地代理并没有真正启动。
先执行:
unset http_proxy unset https_proxy unset HTTP_PROXY unset HTTPS_PROXY unset all_proxy unset ALL_PROXY env | grep -i proxy
如果最后没有任何输出,说明终端代理变量已经清干净了。
如果还有输出,说明你还有残留代理配置,需要继续处理。
你还可以检查这些代理配置是不是写进了启动文件:
grep -n "127.0.0.1:7890" ~/.zshrc ~/.bash_profile ~/.bashrc ~/.zprofile 2>/dev/null
如果查到了类似:
export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890
就把它删掉或者注释掉,然后执行:
source ~/.zshrc
如果你改的是别的文件,就 source 对应文件。
重点提醒:如果本机没有真正运行代理软件,就千万不要乱设 127.0.0.1:7890 这种代理地址。否则终端所有网络请求都会被你自己堵死。
五、第二步:给 Homebrew 配置国内镜像
因为 raw.githubusercontent.com 在中国大陆网络环境下容易不稳定,所以我们后来切换了 Homebrew 镜像。
将以下内容写入 ~/.zshrc:
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"' >> ~/.zshrc echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zshrc source ~/.zshrc
这样做的作用是:
让 Homebrew 尽量通过国内镜像拉取 API 和 bottle 资源,而不是直接去海外地址。
然后执行安装时,如果看到类似:
API Source node.rbVerified ...
说明镜像已经生效了。
重点提醒:如果你不先处理镜像,Homebrew 很可能在下载 node.rb 这一步就卡住。
六、第三步:安装 Node,并处理 Homebrew 锁文件问题
安装 Node:
brew install node
如果这一步报:
A brew install node process has already locked ...
那说明你之前有残留的 brew 进程或者未完成文件。
这时候不要继续重复执行 brew install node,而要先清理。
先看是否有挂起任务:
jobs
如果有挂起任务,比如:
suspended brew install node
用下面命令杀掉:
kill %1
然后杀掉残留 brew 进程:
pkill -f "brew install node" pkill -f "brew install" pkill -f brew
删除未完成文件:
rm -f /Users/jt/Library/Caches/Homebrew/downloads/*.incomplete brew cleanup
再重新安装:
brew install node
安装完成后验证:
node -v npm -v
我们最终成功识别到的是:
Node.js v24.14.0
npm 11.9.0
重点提醒:不要在前一个 brew 命令没彻底退出时,重复敲新的 brew install。否则锁文件问题会反复出现。
七、第四步:不要随便用 Ctrl+Z 挂起命令
这是我们这次过程中一个非常典型的坑。
在终端里,如果你按了:
Ctrl+Z
这不是“终止”,而是“挂起”。
也就是说,命令没有结束,只是被丢到后台暂停了。
这会导致:
brew 进程还占着锁
curl 任务还挂着
端口和文件仍然可能被占用
真正想中断当前命令,应当用:
Ctrl+C
重点提醒:Ctrl+Z 是挂起,不是结束。这个坑特别容易让后续安装一直报锁文件占用。
八、第五步:安装 OpenClaw 时,不要优先选 git 方式
我们一开始尝试的是:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
结果失败了,因为它会执行:
git clone https://github.com/openclaw/openclaw.git
而终端访问 GitHub 443 不稳定,就会报:
Failed to connect to github.com port 443
所以正确做法是:
不要强制指定 git 方式,直接用默认安装方式,也就是 npm 方式。
执行:
curl -fsSL https://openclaw.ai/install.sh | bash
或者你也可以直接手工安装:
npm install -g openclaw@latest
重点提醒:在中国大陆网络环境下,git clone GitHub 仓库往往比 npm 方案更容易失败,所以优先走 npm。
九、第六步:先把 npm 源切到国内镜像
这一步非常重要。
因为即使用 npm 方式安装,如果还是默认国外 registry,也可能下载不稳定。
切换 npm 镜像:
npm config set registry https://registry.npmmirror.com npm config get registry
如果输出:
https://registry.npmmirror.com
说明已切换成功。
为了避免缓存干扰,再清一下缓存:
npm cache clean --force rm -rf ~/.npm/_cacache
重点提醒:Homebrew 镜像和 npm 镜像不是一回事。Homebrew 走清华镜像,不代表 npm 自动也走国内。npm 也要单独切。
十、第七步:OpenClaw 安装中出现 SSH GitHub 依赖报错的真正处理办法
这是我们这次安装过程中最核心、最隐蔽的坑之一。
虽然 OpenClaw 本体是通过 npm 安装的,但它的某个依赖会去拉一个 GitHub 仓库,而且走的不是 HTTPS,而是 SSH:
ssh://git@github.com/whiskeysockets/libsignal-node.git
于是就报:
Permission denied (publickey)Could not read from remote repository
这说明你的机器没有配 GitHub SSH 公钥。
这个时候,最简单的办法不是去配 SSH Key,而是把 GitHub 的 SSH 地址统一改写成 HTTPS 地址。
执行:
git config --global url."https://github.com/".insteadOf git@github.com: git config --global url."https://github.com/".insteadOf ssh://git@github.com/
你可以验证规则是否生效:
git config --global --get-regexp 'url\..*\.insteadOf'
如果能看到类似下面内容,说明成功:
url.https://github.com/.insteadof git@github.com: url.https://github.com/.insteadof ssh://git@github.com/
然后重新执行:
npm install -g openclaw@latest --verbose
重点提醒:这是本次安装最难发现的坑。表面上是 npm 安装失败,实际上是依赖偷偷走了 GitHub SSH,而你的机器没有 SSH 权限。
十一、第八步:如果 npm 全局安装报权限问题怎么办
如果安装时报类似:
EACCES
permission denied
cannot write to /usr/local/...
那就把 npm 全局安装路径改到用户目录。
执行:
mkdir -p ~/.npm-global npm config set prefix ~/.npm-global echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc source ~/.zshrc npm install -g openclaw@latest --verbose
然后验证:
openclaw --version
虽然我们这次日志里最核心的不是权限问题,但这是 macOS 全局安装 npm 包时的高频坑,所以也一并写进来。
十二、第九步:初始化 OpenClaw
安装成功后,初始化:
openclaw onboard --install-daemon
这个过程中如果出现类似提示:
I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
对于个人电脑、个人本机使用场景,应当选:
Yes
因为它的意思是:
默认按个人设备使用方式继续
如果是共享服务器、多用户环境,才需要更严格加固
我们这台机器显然是个人 MacBook Air,所以选 Yes。
重点提醒:这个不是在问你“还装不装”,而是在问你“是否接受按个人使用模式继续配置”。个人电脑就选 Yes。
十三、下一次最推荐你直接照抄的完整安装流程
下面给你一套更接近“从零到安装”的可执行版命令。
下一次你重装时,按这个顺序来。
1. 清理代理环境
unset http_proxy unset https_proxy unset HTTP_PROXY unset HTTPS_PROXY unset all_proxy unset ALL_PROXY env | grep -i proxy
2. 配置 Homebrew 国内镜像
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"' >> ~/.zshrc echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zshrc source ~/.zshrc
3. 清理可能残留的 brew 锁
pkill -f "brew install node" pkill -f "brew install" pkill -f brew rm -f /Users/jt/Library/Caches/Homebrew/downloads/*.incomplete brew cleanup
4. 安装 Node
brew install node node -v npm -v
5. 配置 npm 国内源
npm config set registry https://registry.npmmirror.com npm config get registry npm cache clean --force rm -rf ~/.npm/_cacache
6. 将 GitHub SSH 地址改写为 HTTPS
git config --global url."https://github.com/".insteadOf git@github.com: git config --global url."https://github.com/".insteadOf ssh://git@github.com/ git config --global --get-regexp 'url\..*\.insteadOf'
7. 安装 OpenClaw
npm install -g openclaw@latest --verbose
或者:
curl -fsSL https://openclaw.ai/install.sh | bash
但就我们的实际排障经验来说,手工执行 npm 安装更便于看清错误信息。
8. 初始化
openclaw onboard --install-daemon
个人电脑选 Yes。
十四、这次安装过程中最值得记住的几个大坑
坑一:错误代理最致命
如果你设了本地代理端口,但代理没开,终端基本等于半瘫痪。
一定先确认本地代理是否真的在监听端口。
坑二:raw.githubusercontent.com 不稳定,会直接拖垮 Homebrew
所以 Homebrew 国内镜像很重要。
坑三:Ctrl+Z 会让命令挂起,不会结束
这会引发锁文件、进程残留等一系列连锁问题。
坑四:不要在 brew 安装没结束时重复敲命令
锁文件问题会越来越乱。
坑五:OpenClaw 不要优先走 git 安装
中国大陆网络环境下,git clone GitHub 仓库失败率明显更高。
坑六:npm 主包能下,不代表依赖都能下
有些依赖会偷偷走 GitHub SSH,这是最隐蔽的一类问题。
坑七:Permission denied (publickey) 不一定是你不会用 Git
更常见的是依赖默认用了 SSH 地址,而你本机没有配 GitHub 公钥。
十五、最后给你一个最务实的建议
下一次在 macOS 12 上安装 OpenClaw,不要“哪里报错修哪里”,而要按这条主线走:
先清代理
再配镜像
再装 Node
再切 npm 源
再把 GitHub SSH 改成 HTTPS
最后再装 OpenClaw
你只要按这个顺序执行,成功率会比乱试高很多。
发表评论: