Golang安装第三方包时遇到问题如何解决
Golang安装第三方包时遇到问题如何解决
这已经不是第一次我通过 go get -u github.com/ ... 安装第三方 Go 包了。
问题在于“安装”之后,该包提供的程序并不可用。
例如,errcheck 程序。我在命令行中运行 go get -u github.com/kisielk/errcheck,它顺利完成。但然后呢?我如何在命令行中使用 errcheck 程序?
另一个例子是 go-bindata。
我尝试在 errcheck 包中寻找任何可能是该程序的脚本,但并没有找到类似的东西。
你有什么建议吗?
谢谢
go env GOPATH – /home/aram/go
go env GOBIN – //home/aram/go/bin
请提供以下命令的输出:
$ dir /home/aram/go/bin
$ which errcheck
$ env $PATH
arammikayelyan:
errcheck
errcheck 位于 dir /home/aram/go/bin 目录中。
/home/aram/go/bin 不在 env $PATH 环境变量中。

我的 GOBIN 路径有问题吗?
可执行文件会安装在由 GOBIN 环境变量指定的目录中。如果未设置 GOPATH 环境变量,GOBIN 默认为 $GOPATH/bin 或 $HOME/go/bin。
你的安装目录是否在你的 PATH 环境变量中?
我在我的
~/.zshrc文件中添加了export GOPATH="$HOME/go" PATH="$PATH:GOPATH/bin"。
env: '... /home/aram/.local/bin:GOPATH/bin'
这没有生效!你在 export 语句中使用了 GOPATH,而不是 $GOPATH。
我在我的 ~/.zshrc 文件中添加了 export GOPATH="$HOME/go" PATH="$PATH:GOPATH/bin"。
现在我的环境变量 $PATH 看起来像这样:
env: ‘/home/aram/.nvm/versions/node/v13.3.0/bin:/home/aram/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/bin:/usr/local/go/bin:/home/aram/.fzf/bin:/usr/local/go/bin:/home/aram/.local/bin:GOPATH/bin’: No such file or directory
-
asmfmt go-bindata godoctor go-outline goreturns goxygen motion cobra go-callvis gogetdoc gopkgs go-symbols guru re dlv gocode goimports goplay got hello rice errcheck gocode-gomod golangci-lint gopls gotags iferr shadow fillstruct go-code-visualizer golint gops gotest impl staticcheck first_webapp godef gomodifytags gorename gotests keyify tour -
未找到 errcheck
-
env: ‘/home/aram/.nvm/versions/node/v13.3.0/bin:/home/aram/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/bin:/usr/local/go/bin:/home/aram/.fzf/bin:/usr/local/go/bin:/home/aram/.local/bin’: No such file or directory
你遇到的问题是因为 go get 下载的包默认不会将可执行文件安装到系统路径中。你需要确保 $GOPATH/bin(或者 $GOBIN,如果设置了的话)在你的系统 PATH 环境变量中。
解决方法:
-
检查你的
GOPATH和PATH设置:- 首先,确认你的
GOPATH环境变量已经正确设置。可以通过运行go env GOPATH来查看。 - 然后,将
$GOPATH/bin添加到你的PATH环境变量中。这样,通过go get -u安装的可执行文件就可以在命令行中直接访问了。
在 Linux/Mac 上,可以这样设置:
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin将这两行添加到你的 shell 配置文件(如
~/.bashrc、~/.zshrc等)中,然后重新加载配置文件或重启终端。在 Windows 上,可以通过系统属性设置环境变量:
- 将
%USERPROFILE%\go\bin(假设GOPATH是%USERPROFILE%\go)添加到PATH中。
- 首先,确认你的
-
安装后验证:
- 设置好
PATH后,重新运行go get -u github.com/kisielk/errcheck。 - 然后尝试在命令行中运行
errcheck,应该就可以正常使用了。
- 设置好
-
示例: 假设你的
GOPATH是~/go,那么go get -u github.com/kisielk/errcheck会将errcheck可执行文件安装到~/go/bin/目录下。只要~/go/bin/在PATH中,你就可以直接在命令行中使用errcheck命令。 -
对于 go-bindata: 同样的方法适用于
go-bindata。运行go get -u github.com/go-bindata/go-bindata/...(注意包路径中的/...,这确保了安装可执行文件),然后确保$GOPATH/bin在PATH中,就可以使用go-bindata命令了。
注意: 从 Go 1.16 开始,推荐使用 go install 来安装可执行文件,例如:
go install github.com/kisielk/errcheck@latest
这会将可执行文件安装到 $GOBIN 或 $GOPATH/bin 中,同样需要确保该目录在 PATH 中。
通过以上步骤,你应该可以在命令行中直接使用通过 go get 或 go install 安装的第三方 Go 工具了。

