
MacOS 上通过官方安装包升级 Go 后,go version 仍显示旧版本(如 1.6),通常因 Homebrew 管理的 Go(位于 /usr/local/Cellar/go/)残留并优先被 $PATH 调用所致;正确做法是统一使用 Homebrew 管理或彻底清理冲突路径。
macos 上通过官方安装包升级 go 后,`go version` 仍显示旧版本(如 1.6),通常因 homebrew 管理的 go(位于 `/usr/local/cellar/go/`)残留并优先被 `$path` 调用所致;正确做法是统一使用 homebrew 管理或彻底清理冲突路径。
你在 macOS 上成功安装了 Go 1.7 官方安装包,但执行 go version 却返回 go1.6,根本原因在于系统实际调用的是 Homebrew 安装的旧版 Go —— 其二进制文件位于 /usr/local/Cellar/go/1.6/bin/go,并通过符号链接挂载到 /usr/local/bin/go。而你的 $PATH 中 /usr/local/bin 排在 /usr/local/go/bin 之前,导致 shell 总是优先找到 Homebrew 版本,完全绕过了新安装的官方 Go。
✅ 推荐方案:统一使用 Homebrew 管理 Go(最安全、可持续)
Homebrew 是 macOS 上主流的包管理工具,能自动处理版本切换、依赖和路径更新。只需一条命令即可完成升级与路径修复:
brew update && brew upgrade go
执行后,Homebrew 会:
- 下载并安装最新稳定版 Go(当前为 1.7+);
- 自动更新 /usr/local/bin/go 指向新版本(如 /usr/local/Cellar/go/1.7.0/bin/go);
- 清理旧版本缓存(可选运行 brew cleanup go 彻底删除旧 Cellar 子目录)。
? 验证是否生效:
which go # 应输出 /usr/local/bin/go go version # 应输出 go version go1.7.x darwin/amd64(或更高) echo $PATH # 确保 /usr/local/bin 在 /usr/local/go/bin 之前(若你后续改用官方包,则需调整 PATH)
⚠️ 若坚持使用官方安装包(不依赖 Homebrew):
必须手动解除 Homebrew 的干扰:
- 删除 Homebrew 的 Go 链接与安装:
brew uninstall go rm -f /usr/local/bin/go
- 确保 /usr/local/go/bin 在 $PATH 最前端(编辑 ~/.zshrc 或 ~/.bash_profile):
export PATH="/usr/local/go/bin:$PATH"
- 重新加载 Shell 配置:
source ~/.zshrc # 或 source ~/.bash_profile
? 关键提醒:
- 不要混合使用 Homebrew 和官方安装包管理同一工具,易引发路径冲突;
- Cellar 是 Homebrew 的核心存储目录(/usr/local/Cellar/),所有通过 brew install 安装的软件均存放于此,由 brew link 建立全局链接;
- 官方 pkg 安装器不会主动清理 Homebrew 内容,这是设计使然——它只负责自身路径,不干预第三方包管理器。
选择任一方案后,重启终端或重新加载配置,go version 即可准确反映当前安装版本。


















