Golang安装第三方包时遇到问题如何解决

Golang安装第三方包时遇到问题如何解决 这已经不是第一次我通过 go get -u github.com/ ... 安装第三方 Go 包了。 问题在于“安装”之后,该包提供的程序并不可用。

例如,errcheck 程序。我在命令行中运行 go get -u github.com/kisielk/errcheck,它顺利完成。但然后呢?我如何在命令行中使用 errcheck 程序?

另一个例子是 go-bindata。

我尝试在 errcheck 包中寻找任何可能是该程序的脚本,但并没有找到类似的东西。

你有什么建议吗?

谢谢

10 回复

我修复了它并且它正常工作了。谢谢。

更多关于Golang安装第三方包时遇到问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


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 环境变量中。

image

我的 GOBIN 路径有问题吗?

Go 命令

可执行文件会安装在由 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
  1. 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

  2. 未找到 errcheck

  3. 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 环境变量中。

解决方法:

  1. 检查你的 GOPATHPATH 设置:

    • 首先,确认你的 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 中。
  2. 安装后验证:

    • 设置好 PATH 后,重新运行 go get -u github.com/kisielk/errcheck
    • 然后尝试在命令行中运行 errcheck,应该就可以正常使用了。
  3. 示例: 假设你的 GOPATH~/go,那么 go get -u github.com/kisielk/errcheck 会将 errcheck 可执行文件安装到 ~/go/bin/ 目录下。只要 ~/go/bin/PATH 中,你就可以直接在命令行中使用 errcheck 命令。

  4. 对于 go-bindata: 同样的方法适用于 go-bindata。运行 go get -u github.com/go-bindata/go-bindata/...(注意包路径中的 /...,这确保了安装可执行文件),然后确保 $GOPATH/binPATH 中,就可以使用 go-bindata 命令了。

注意: 从 Go 1.16 开始,推荐使用 go install 来安装可执行文件,例如:

go install github.com/kisielk/errcheck@latest

这会将可执行文件安装到 $GOBIN$GOPATH/bin 中,同样需要确保该目录在 PATH 中。

通过以上步骤,你应该可以在命令行中直接使用通过 go getgo install 安装的第三方 Go 工具了。

回到顶部