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

时间:2013-07-16 04:01:24

标签: linux go debian

我遇到了go install命令的恼人问题。

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

我在.bashrc中验证了我的环境变量,并且还运行了“环境变量”。 (见下文)并且找不到任何问题:

的.bashrc

export GOBIN=$HOME/dev/src/go/bin
export GOPATH=$HOME/dev/go-dev
export PATH=$PATH:$GOBIN:$GOPATH/bin

go env

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"

This post有一个类似的问题,除了我的环境中有GOPATH(我尝试了解决方案,但它没有帮助)。

当我尝试创建测试库using official GoLang site并运行 go install 时,我在$ GOPATH / pgk / linux_amd64中创建了一个正确的文件,但是没有在bin目录中创建

我的配置中遗漏了什么?

1 个答案:

答案 0 :(得分:11)

Official documentation关于go工具:

  

如果DIR是GOPATH ...

中列出的目录      

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

mailing list上讨论了这个主题,进一步解释了这个问题:

  

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

     

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

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