mac m芯片上用go install安装buffalo cli可行,但需确保go为darwin/arm64架构、安装arm64版sqlite3及c工具链,并将$gopath/bin加入path,否则会卡在sqlite3编译或启动失败。

Mac M芯片(Apple Silicon)上用 go install 编译安装 Buffalo CLI 是可行的,但必须确保 Go 工具链、C 依赖和环境变量三者对齐,否则会卡在 sqlite3 驱动编译或 buffalo dev 启动失败。
确认 Go 运行时支持 arm64 架构
执行 go version,输出中必须含 darwin/arm64(例如 go version go1.26.0 darwin/arm64)。若显示 darwin/amd64,说明你装的是 Intel 版 Go —— 即使在 M 芯片上通过 Rosetta 运行,也会导致后续 sqlite3 编译链接失败或运行时 panic。
- 去 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 下载标有
darwin-arm64的 pkg 安装包,不是darwin-amd64 - 安装后执行
which go,确认路径为/opt/homebrew/bin/go(Homebrew arm64)或/usr/local/go/bin/go(官方 pkg),而非/usr/local/bin/go(可能为旧版 Intel) - 运行
go env GOARCH,必须返回arm64
安装前必须装好 Apple Silicon 兼容的 C 工具链
Buffalo 默认启用 SQLite 支持,而 github.com/mattn/go-sqlite3 在 macOS 上需本地 gcc 编译 CGO。M 芯片用户不能只靠 Xcode Command Line Tools,还必须确保 libsqlite3 头文件和动态库可用。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 运行
xcode-select --install安装最新命令行工具 - 用 Homebrew 安装 arm64 版本的 sqlite3:
brew install sqlite3(检查brew config中arch为arm64) - 验证:
pkg-config --modversion sqlite3应输出版本号;ls /opt/homebrew/lib/libsqlite3.dylib(Homebrew arm64 默认路径)应存在 - 若跳过这步,
go install github.com/gobuffalo/cli/cmd/buffalo@latest会卡在# github.com/mattn/go-sqlite3编译阶段,报错类似clang: error: unsupported option '-fopenmp'或找不到sqlite3.h
执行安装并绕过 GOPATH 陷阱
Apple Silicon 上的 macOS(尤其是使用 Homebrew arm64 安装 Go 时)默认 $GOPATH 是 ~/go,但 go install 生成的二进制默认放在 $GOPATH/bin,这个目录**不会自动加入 PATH** —— 这是 M 芯片新手最常漏掉的一环。
- 运行安装命令:
go install github.com/gobuffalo/cli/cmd/buffalo@latest - 检查是否生成:
ls -l ~/go/bin/buffalo(权限应为-rwxr-xr-x) - 将
~/go/bin加入 shell 配置(Zsh 用户编辑~/.zshrc):export PATH="$HOME/go/bin:$PATH",然后source ~/.zshrc - 验证:
buffalo version应输出类似v0.18.13;若仍报command not found,说明 PATH 没生效,别直接重开终端,先echo $PATH看是否含/Users/xxx/go/bin
真正容易被忽略的点:即使你用预编译二进制(如 buffalo_0.18.13_darwin_arm64.tar.gz),只要后续项目用 --with-sqlite3 选项生成,buffalo dev 启动时仍会尝试加载 CGO sqlite3 驱动 —— 所以 C 工具链和 libsqlite3 动态库依然必须就位,否则服务启动即崩溃,报错 dyld: Library not loaded: /opt/homebrew/opt/sqlite3/lib/libsqlite3.0.dylib。










