Golang快速安装第三方包方法
Go1.18+起goget不再安装命令行工具,仅用于添加依赖;安装工具须用goinstall+版本后缀(如@latest),并确保GOBIN在PATH中,同时建议配置GOPROXY和GOSUMDB解决国内网络问题。
Go 1.18+ 起 go get 不再安装命令行工具,仅用于添加依赖;安装工具须用 go install + 版本后缀(如 @latest),并确保 GOBIN 在 PATH 中,同时建议配置 GOPROXY 和 GOSUMDB 解决国内网络问题。

go get 命令现在默认不直接安装可执行工具
从 Go 1.18 开始,go get 不再支持直接安装命令行工具(比如 golint、mockgen),它只用于添加依赖到 go.mod。如果你运行 go get github.com/golang/mock/mockgen,只会把该模块加进 require,不会把 mockgen 二进制放到 $GOBIN 或 $GOPATH/bin。
真正想“安装工具”,得用 go install:
go install github.com/golang/mock/mockgen@latest
注意必须带版本后缀(如 @latest、@v1.6.0),否则报错:go install: version is required when current directory is not in a module。
GOBIN 环境变量决定二进制安装位置
go install 默认把编译好的可执行文件放进 $GOBIN;没设的话,会 fallback 到 $GOPATH/bin(而 $GOPATH 默认是 $HOME/go)。
- 检查当前设置:
go env GOBIN - 临时指定路径:
GOBIN=/usr/local/bin go install github.com/cosmtrek/air@latest - 永久生效(加到
~/.zshrc或~/.bashrc):export GOBIN=$HOME/bin,然后确保$HOME/bin在$PATH里
没加进 $PATH 的话,即使安装成功,终端也找不到命令 —— 这是最常被忽略的一步。
代理和模块校验经常导致安装失败
国内直连 proxy.golang.org 或 sum.golang.org 经常超时或 403,表现为:
go install: github.com/xxx/yyy@latest: Get "https://proxy.golang.org/...": dial tcp xx.xx.xx.xx:443: i/o timeoutverifying github.com/xxx/yyy@v1.2.3: checksum mismatch
解决方法(任选其一):
- 启用 GOPROXY:
go env -w GOPROXY=https://goproxy.cn,direct - 跳过校验(仅测试环境):
go env -w GOSUMDB=off - 或者两者都设:
go env -w GOPROXY=https://goproxy.cn,direct && go env -w GOSUMDB=off
注意:设完后不用重启终端,但旧 shell 里已运行的 go 命令可能缓存了旧配置,建议新开终端验证:go env GOPROXY。
区分 “包” 和 “命令”:不是所有模块都能 go install
只有包含 main 函数、且入口文件在 package main 下的模块,才能通过 go install 编译成可执行文件。例如:
- ✅ 可安装:
go install github.com/google/wire/cmd/wire@latest(路径含/cmd/wire) - ❌ 报错:
go install github.com/google/wire@latest(这是库,没有main) - ✅ 可安装(Go 1.21+ 支持):
go install golang.org/x/tools/cmd/goimports@latest
如果不确定一个项目是否提供命令,去看它的 GitHub README,或查源码里有没有 cmd/xxx 目录。盲目 go install 顶层路径,大概率失败。


































