我试图像这样安装doozer:

$ goinstall github.com/ha/doozer

我得到这些错误。

goinstall: os: go/build: package could not be found locally goinstall: fmt: go/build: package could not be found locally goinstall: io: go/build: package could not be found locally goinstall: reflect: go/build: package could not be found locally goinstall: math: go/build: package could not be found locally goinstall: rand: go/build: package could not be found locally goinstall: url: go/build: package could not be found locally goinstall: net: go/build: package could not be found locally goinstall: sync: go/build: package could not be found locally goinstall: runtime: go/build: package could not be found locally goinstall: strings: go/build: package could not be found locally goinstall: sort: go/build: package could not be found locally goinstall: strconv: go/build: package could not be found locally goinstall: bytes: go/build: package could not be found locally goinstall: log: go/build: package could not be found locally goinstall: encoding/binary: go/build: package could not be found locally


当前回答

不建议使用GOPATH和GOROOT配置。

您可以使用GO模块。

例如:

mkdir go_app
cd go_app
go mod init go_app

其他回答

你可以使用一个命令:go env GOPATH

GOPATH不应该指向Go安装,而是指向您的工作空间(参见https://golang.org/doc/code.html#GOPATH)。当你使用go get或go install安装某个包时,它会落在GOPATH中。这就是为什么它警告你,你绝对不希望从互联网随机包被转储到你的正式安装。

以下是我的简单设置:

directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software      : ~/programming/go/packages

GOROOT、GOPATH、PATH的设置如下:

export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

所以,简而言之:

GOROOT是编译器/工具,来自go安装。 GOPATH是为你自己的项目/第三方库(下载“go get”)。

GOPATH的讨论如下:

GOPATH环境变量 GOPATH可以设置为一个以冒号分隔的路径列表,其中Go 可以找到代码、包对象和可执行文件。 设置GOPATH使用goinstall来构建和安装您自己的代码和 Go树之外的外部库(并避免写入 makefile)。

这里讨论的是GOROOT:

$GOROOT Go树的根,通常是$HOME/ Go。默认为 目录的父目录。Bash运行。如果你选择不去的话 设置$GOROOT时,必须运行gomake而不是make或gmake 使用传统的makefile开发Go程序。

具体到GOROOT, Go 1.9会自动将其设置到其安装路径。 即使你安装了多个Go,调用1.9。xone将GOROOT设置为/path/到/go/1.9(之前,如果没有设置,它假设默认路径为/usr/local/go或c:\ go)。

参见CL Go Review 53370:

The go tool will now use the path from which it was invoked to attempt to locate the root of the Go install tree. This means that if the entire Go installation is moved to a new location, the go tool should continue to work as usual. This may be overriden by setting GOROOT in the environment, which should only be done in unusual circumstances. Note that this does not affect the result of the runtime.GOROOT() function, which will continue to report the original installation location; this may be fixed in later releases.