go install总是使用GOROOT/bin而不是GOPATH

Tim*_*mka 5 linux debian go

我遇到了烦人的go install命令问题.

每次我尝试在src我的GOPATH目录中运行它时,由于某种原因,结果文件将在GOROOT/bin目录中创建.

我在.bashrc中验证了我的环境变量,并运行'go env'(见下文)并找不到任何问题:

的.bashrc

export GOBIN=$HOME/dev/src/go/bin
export GOPATH=$HOME/dev/go-dev
export PATH=$PATH:$GOBIN:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)

去环境

GOARCH="amd64"
GOBIN="/home/user/dev/src/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/dev/go-dev"
GORACE=""
GOROOT="/home/user/dev/src/go"
GOTOOLDIR="/home/user/dev/src/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

这篇文章有一个类似的问题,除了我在我的环境中有GOPATH(我尝试了解决方案,但它没有帮助).

当我尝试使用官方GoLang站点创建测试库并运行go install时,我在$ GOPATH/pgk/linux_amd64中创建了一个正确的文件,但是没有在bin目录中创建.

我在配置中遗漏了什么吗?

bea*_*mit 11

有关该go工具的官方文档:

如果DIR是GOPATH中列出的目录......

如果设置了GOBIN环境变量,则命令将安装到它命名的目录而不是DIR/bin

邮件列表上有关于此主题的讨论,在此进一步说明:

(a)如果你没有设置你的GOBIN env变量,你可以在GOROOT/bin中获得Go编译器二进制文件,而你的二进制文件将在GOPATH/bin中.(我个人喜欢这种二进制分离.)

(b)如果你将GOBIN设置为任何东西,那么Go二进制文件和你的二进制文件都将转到GOBIN.

你的案例中的解决方案是不设置你的GOBIN.