我正在尝试像这样安装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



评论

@Motin上面的链接不再有效

该文件已成为该项目的过时文件。与OSX相关的相关问题位于:github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841

注意:默认情况下,将在Go 1.8(2017)中为您设置GOPATH。请参阅下面的答案

使用Go 1.9(2017年第三季度),您不再需要担心GOROOT。请参阅下面的答案。

@BenyaminJafari,因为goinstall确实是Go1之前的古老版本,自2012年以来就不存在。

#1 楼

GOPATH文档中讨论了cmd/go


GOPATH环境变量列出了查找Go代码的位置。在
Unix上,该值是用冒号分隔的字符串。在Windows上,该值为
,以分号分隔的字符串。在Plan 9上,该值是一个列表。

必须设置GOPATH以获取,构建和安装标准Go树之外的软件包。


在安装说明中讨论了GOROOT


Go二进制发行版假定它们将安装在
/usr/local/go(或Windows下的c:\Go)中,但可以安装
将Go工具移到其他位置。在这种情况下,必须将
GOROOT环境变量设置为指向安装它的目录。

例如,如果已安装,请转到主目录。将以下命令添加到$HOME/.profile中:

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin


注意:仅当安装到自定义位置时,才必须设置GOROOT


(克里斯·邦奇的答案的更新版本。)

评论


有关GOPATH的更多详细信息,请参见如何编写Go代码。需要掌握那里的信息才能理解go命令,这对于使用Go至关重要。例如,现在应该在go中使用goinstall中的goinstall。

–索尼娅
2012年6月1日15:45

另请注意go的实际安装路径。例如,在默认的自制程序设置中,自制程序将安装在/ usr / local / Cellar / go /中。在这种情况下,导出路径应设置为export GOROOT = / usr / local / Cellar / go / {version}并导出PATH = $ PATH:$ GOROOT / bin。

– ekillaby
13年3月4日在16:32



我必须导出GOROOT = / usr / local / Cellar / go / 1.2 / libexec /才能使我的Brew工作。

–史蒂文·索罗卡(Steven Soroka)
2014年2月7日在21:32

我不建议进行此修改,因为该应用程序抱怨我的编辑“似乎包含”未格式化的代码(不是这样;非常感谢),但是:

–通配符
19年5月15日在15:41

从Go 1.10开始,如果未设置GOROOT,则go工具将尝试通过自己的位置进行查找。我也无法粘贴链接,因为粘贴在Stack Exchange的iOS应用中不起作用。现在非常沮丧。

–通配符
19年5月15日在15:43

#2 楼

这是我的简单设置:

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项目/第三方库(通过“ go get”下载)。

评论


我认为这个答案更容易理解,因为有针对文件夹结构的映射。

– h-rai
18年5月7日在11:35

GOPATH是否将整个项目树(例如git)包含在非执行文件中-例如图像,脚本,构建文件等?

– Serge Merzliakov
19年5月17日在1:44

您能提供安装墙吗?我假设您使用wget下载tar文件并稍后将其解压缩?

–卢卢
20年7月17日在9:48

#3 楼

首先运行go env
如果未安装go,则可以通过homebrew或通过软件包和/或其他方式安装。
如果看到输出,则说明您已安装Go
它显示所有已设置和未设置的环境。

如果看到GOROOT为空:


运行which go(在我的计算机上: /usr/local/go/bin/go
,然后像这样导出export GOROOT=/usr/local/go


如果您看到GOPATH的内容为空:在我的情况下进行项目:~/GO_PROJECTS

然后export GOPATH=~/GO_PROJECTS



评论


哪个对我有用。它是从以前使用Chocolatey安装的安装位置中转到另一个go安装位置。删除该文件夹并将其从PATH变量中删除。现在可以了。谢谢!

–斯加格
16年5月25日在17:57

在Windows 7中,哪个go命令对我不起作用。如何找到应该在哪里运行此命令的命令?

–firstpostcommenter
18年4月4日在12:55

相应的Windows命令在哪里,它将向您显示已执行文件的路径

– Falco
19年4月5日在11:48

导出GOPATH =〜/ GO_PROJECTS完成工作

– Thamaraiselvam
19-10-2 19:38

#4 楼

在此处讨论GOPATH


GOPATH环境变量

GOPATH可以设置为用冒号分隔的路径列表,在其中Go
代码包对象和可执行文件。 > Makefiles)。在这里讨论GOPATH


GOROOT Go树的根,通常是$GOROOT。这默认为运行$HOME/go的目录的父目录。如果选择不设置all.bash,则在使用常规makefile开发Go程序时必须运行gomake而不是make或gmake。


评论


因此,如果我已经安装到〜/ projects / go,那么变量的值应该是什么才能找到os,fmt等?

– jshen
2011年11月1日21:48

那么在sudo apt-get install golang时Go会安装在哪里?

–weberc2
2013年1月11日,1:30

@ weberc2如果运行go env,您应该会看到该信息,对我来说是/ usr / lib / go /

–安德烈
13年2月4日在18:38

#5 楼

我阅读了go help gopath文档,仍然感到非常困惑,但是从另一个go doc页面发现了这个小块:开发Go代码时,很可能需要设置唯一的环境变量。


http://golang.org/doc/code.html#GOPATH

#6 楼

GOPATH不应指向Go安装,而应指向您的工作空间(请参阅https://golang.org/doc/code.html#GOPATH)。每当您使用go get或go install安装某些软件包时,它将落入GOPATH中。这就是为什么会警告您的原因,您绝对不希望将来自互联网的随机软件包转储到您的正式安装中。

#7 楼

从go 1.8(2017年第二季度)开始,默认情况下会将GOPATH设置为$ HOME / go

请参阅问题17262和Rob Pike的评论:
没有唯一的最佳答案,但这又简短又甜蜜,如果$HOME/go已经存在,选择该名称将是一个问题,这只会让已经安装了该软件的专家感到高兴。会了解$HOME/go


评论


如此简单的话题如何变得如此复杂!感谢您的最佳答案。

– dodgy_coder
18年4月19日在13:51

@dodgy_coder其实...看一下我的其他答案的前两行:stackoverflow.com/a/37905102/6309;)最终可能会变得更简单:根本没有GOPATH!有关更多详细信息,请参见stackoverflow.com/a/48914523/6309。

–VonC
18年4月19日在13:56



是的,我同意,如果您使用默认值,则不是真的需要GOPATH,对吗?我仍然需要设置它,因为Google App Engine(Go标准)开发环境需要它。他们实际上告诉您设置GOPATH,但没有告诉您将其设置为什么值。

– dodgy_coder
18年4月20日在12:59



@dodgy_coder是的,默认情况下,Go将以固定的预定值查找项目PATH。

–VonC
18年4月20日在13:01

#8 楼

如上所述:


GOPATH环境变量指定您的
工作区的位置。


对于Windows,这对我有用(在Ms-dos窗口中):

set GOPATH=D:\my_folder_for_go_code\


这将创建一个MPATH可以识别的GOPATH变量,如下所示: br />

#9 楼

特别是对于GOROOT,Go 1.9会自动将其设置为安装路径。
即使安装了多个Go,调用1.9.x也会将GOROOT设置为/path/to/go/1.9(如果未设置,则假定为默认路径类似于/usr/local/goc:\Go)。

请参阅CL Go Review 53370:


现在,go tool将使用调用它的路径来尝试查找根
这意味着如果整个Go安装都移到了新位置,则go tool应该继续照常工作。
请注意,这不会影响GOROOT函数的结果,该函数将继续报告原始安装位置;这可能会在以后的版本中修复。


#10 楼

这是一个解决方案(单个用户):

GOROOT=$HOME/.local # your go executable is in $GOROOT/bin
GOPATH=$HOME/.gopath
PATH=$GOROOT/bin:$GOPATH/bin:$PATH


go抱怨如果将.gopath更改为.gorust/cargo伙计们做了,只是将所有东西都放在一个地方。

#11 楼

从2020年和Go 1.13版开始,在Windows中,更新GOPATH的最佳方法是在命令提示符下键入:

setx GOPATH C:\mynewgopath


#12 楼

在osx中​​,我安装了brew,这是适用于我的设置

GOPATH="$HOME/my_go_work_space" //make sure you have this folder created

GOROOT="/usr/local/Cellar/go/1.10/libexec"


#13 楼

我必须在Mac OS X上将

export GOROOT=/usr/local/Cellar/go/1.10.1/libexec


附加到我的〜/ .bash_profile

#14 楼

在某些情况下,当我们使用go时,它会编译所有go文件。新的main.go文件。然后,当我们构建应用程序时,所有go文件都会被编译。因此发生的错误可能是由于其他一些go文件中的编译错误所致。

#15 楼

一旦安装了Go lang,GOROOT就是安装的根目录。

当我在Windows C:\目录中分解Go Lang二进制文件时,我的GOROOT应该是C:\ go。
如果与Windows安装程序一起安装的,对于64位程序包,它可能是C:\ Program Files \ go(或C:\ Program Files(x86)\ go)。

 GOROOT = C:\go


而我的GOPATH是Go lang源代码或工作区的位置。

如果我的Go lang源代码位于C:\ Users \\ GO_Workspace,则您的GOPATH将如下所示:

 GOPATH = C:\Users\<xyz>\GO_Workspace


#16 楼

您无需显式设置GOROOT(现代版本的Go可以根据您运行的go二进制文件的位置自行弄清它)。 :
go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

删除GOROOT,更新我的GOPATH和vgo解决了此问题。在其中可以找到Go代码,包对象和可执行文件。
设置GOPATH以使用goinstall在Go树之外构建和安装自己的代码和外部库(并避免编写Makefile)。


#17 楼

如果使用发行版,则应指向包含文件的位置,例如:

$ rpm -ql golang | grep include
/usr/lib/golang/include


(这是用于Fedora 20的)

#18 楼

值应为(MACOS):

GOROOT="/usr/local/go" --> all binaries file core go
GOPATH="/Applications/proyectos/go" --> the route to workspace (custom workspace)