官方不推荐用 apt 安装 Go,因版本滞后且默认不支持 go install;推荐直接下载官方二进制包解压至 /usr/local/go 并配置 PATH,再设置 GOPATH=$HOME/go、GOBIN=$HOME/go/bin 且确保其在 PATH 前置。

怎么用 apt 安装 Go(Ubuntu/Debian)
官方不推荐用系统包管理器装 Go,因为 Ubuntu/Debian 仓库里的 golang 包版本通常滞后 2–3 个大版本,且默认不带 go install 支持(Go 1.16+ 才启用模块化安装),容易在跑 go install github.com/xxx/yyy@latest 时失败。
如果你只是临时测试、写个脚本、或机器受限只能走 apt,可以装,但得知道代价:
- 执行
sudo apt update && sudo apt install golang,装完go version可能显示go1.18.1(Ubuntu 22.04)或更老 -
GOPATH默认设为$HOME/go,但GO111MODULE=on默认开启,所以老式$GOPATH/src工作流会失效 - 升级需等系统更新,不能单独升 Go
直接下载二进制包配环境变量(推荐)
这才是 Linux 上最可控、最常用的方式。Go 官方提供静态链接的 .tar.gz,解压即用,无需编译,也不污染系统路径。
实操步骤:
立即学习“go语言免费学习笔记(深入)”;
- 去 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 找最新稳定版,比如
go1.22.5.linux-amd64.tar.gz - 运行:
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz - 把
/usr/local/go/bin加进$PATH:在~/.bashrc或~/.zshrc末尾加一行export PATH=$PATH:/usr/local/go/bin - 重载配置:
source ~/.bashrc(或source ~/.zshrc),再运行go version验证
注意:/usr/local/go 是约定俗成路径,别改成 /opt/go 或 $HOME/go —— 否则某些 IDE(如 VS Code 的 Go 插件)可能识别不到 SDK。
GOBIN 和 GOPATH 怎么设才不踩坑
Go 1.16+ 默认启用模块(GO111MODULE=on),GOPATH 不再是代码存放地,而是工具和缓存目录;GOBIN 控制 go install 编译出的二进制放哪。
常见错误现象:go install 成功但命令找不到,或者 go get 报 cannot find module providing package。
建议配置:
-
export GOPATH=$HOME/go(保持默认即可,不用改) -
export GOBIN=$HOME/go/bin(显式声明,避免依赖$GOPATH/bin的隐式逻辑) - 确保
$GOBIN在$PATH里,且位置比系统/usr/bin靠前(否则可能调到旧版gofmt等) - 不要把项目代码放
$GOPATH/src—— 新项目直接mkdir myproj && cd myproj && go mod init myproj
验证工作空间是否真就绪
光有 go version 输出还不够。真实开发中容易卡在“环境看似正常,但 go run 或 go test 行为异常”的阶段。
快速验证项:
- 运行
go env GOPATH GOBIN GOROOT GO111MODULE,确认值合理(GOROOT应为/usr/local/go,GO111MODULE应为on) - 新建测试目录,
go mod init example.com/test,再echo 'package main; func main(){println("ok")}' > main.go,然后go run main.go—— 能输出 ok 才算通路完整 - 试装一个命令行工具:
go install golang.org/x/tools/cmd/gopls@latest,完成后检查which gopls是否指向$GOBIN/gopls
最容易被忽略的是 shell 配置未生效(尤其用 zsh 却改了 bashrc)、或终端没重启导致 $PATH 没刷新 —— 这类问题占实际排查时间的 70% 以上。










