go install 与工具安装
本教程共 80 篇 · 第 69 篇 · 更新于 2026-07-27 · 约 7 分钟阅读
69. go install 与工具安装
本节目标:学会用
go install pkg@version安装命令行工具,理解 go get 和 go install 的分工,配置好 GOBIN。
安装命令行工具
Go 写的工具程序用 go install 安装。语法是在包路径后面加 @版本:
# 安装最新版
go install github.com/go-delve/delve/cmd/dlv@latest
# 安装指定版本
go install golang.org/x/tools/gopls@v0.16.0
# 安装某个 commit
go install github.com/spf13/cobra-cli@latest
安装后生成的可执行文件放在 $GOBIN(默认是 $GOPATH/bin)。把这个目录加到系统 PATH 里就能直接用。
@version 是什么
@version 是版本查询语法,几种常见写法:
go install pkg@latest # 最新稳定版
go install pkg@v1.2.3 # 指定语义版本
go install pkg@v1.2 # 次版本下最新的 patch
go install pkg@main # main 分支最新
go install pkg@HEAD # 默认分支最新
go install pkg@a1b2c3d # 指定 commit hash
Note带
@version时,go install会忽略当前目录的 go.mod,直接从远程拉指定版本。这很重要:你可以在任何地方安装工具,不影响当前项目。
不带版本的情况
go install example.com/cmd
不带 @version 时,go install 会在当前模块的 go.mod 里找这个包的版本,按 go.mod 的要求编译。这种用法适合「安装自己模块里的命令」。
go get vs go install 的变更
历史上 go get 既管依赖又管装工具,容易混乱。Go 1.17 起拆分:
| 命令 | 1.17 前 | 1.17+ |
|---|---|---|
go get | 加依赖 + 装二进制 | 只管 go.mod 依赖 |
go install pkg@version | 不存在 | 专门装二进制 |
Go 1.18 起 go get 彻底不编译了,只改 go.mod。
Warning老教程里
go get -u github.com/x/y装工具的写法已废弃。现在装工具一律用go install pkg@version。如果你看到go get装二进制的教程,那是过时的。
现代工作流
日常开发的标准动作:
- 管理项目依赖:在项目目录里
go get/go mod tidy - 安装全局工具:在任意目录
go install pkg@version - 运行项目:
go run或go build
三条互不干扰。项目依赖不会污染全局,全局工具也不影响项目 go.mod。
GOBIN 配置
安装的二进制放哪?由 GOBIN 或 GOPATH/bin 决定:
go env GOBIN # 查看设置
go env GOPATH # 查看 GOPATH
如果 GOBIN 没设,默认用 $GOPATH/bin。GOPATH 默认是 $HOME/go。
把 bin 目录加到 PATH:
# Linux/macOS,加到 ~/.bashrc 或 ~/.zshrc
export PATH=$PATH:$(go env GOPATH)/bin
# Windows PowerShell
$env:PATH += ";$(go env GOPATH)\bin"
设好之后,安装的工具就能直接敲命令名用:
go install github.com/go-delve/delve/cmd/dlv@latest
dlv version # 直接可用
常用工具推荐
几个开发常用的工具,都用 go install 装:
# gopls 语言服务器(VS Code Go 扩展会自动装)
go install golang.org/x/tools/gopls@latest
# dlv 调试器
go install github.com/go-delve/delve/cmd/dlv@latest
# goimports 自动管理 import
go install golang.org/x/tools/cmd/goimports@latest
# govulncheck 漏洞扫描
go install golang.org/x/vuln/cmd/govulncheck@latest
# staticcheck 静态分析
go install honnef.co/go/tools/cmd/staticcheck@latest
版本不匹配怎么办
装工具时报版本错误,可能是工具要求的 Go 版比你本地高。两种解法:
# 方法一:升级本地 Go 到最新
# 方法二:用 GOTOOLCHAIN 自动切换
GOTOOLCHAIN=go1.26.0 go install pkg@latest
Go 1.21+ 的工具链机制会自动下载需要的版本来编译,不用手动装多个 Go。
小结
go install pkg@version安装命令行工具,装到$GOBIN@version指定版本,@latest取最新- 带
@version忽略当前 go.mod,任何目录都能装 go get只管依赖,go install只管装二进制,1.18 起彻底分开- 把
$GOPATH/bin加到 PATH,装完就能用 - 老式
go get装二进制已废弃
下一节讲工作区模式,管理多个模块。