2013-07-26 46 views
25

但是,當我已經設置它。我甚至創建子目錄,我不知道是否necesary:

$ echo $GOPATH && ls -r $GOPATH 
/home/cyrus/.go 
src pkg bin 

$ echo $GOROOT && ls $GOROOT 
/usr/local/go 
api AUTHORS bin CONTRIBUTORS doc favicon.ico include lib LICENSE misc PATENTS pkg README robots.txt src test VERSION 

爲什麼我仍然得到錯誤,當我做:

$ go get code.google.com/p/go-tour/gotour                            
package code.google.com/p/go-tour/gotour: cannot download, $GOPATH not set. For more details see: go help gopath 

回答

27

如果設置這樣的變量:

GOPATH=$HOME/go 

它不會被導出到任何子流程。它只適用於該過程。如果你想將它導出到子進程,使用export

export GOPATH 

您還可以結合分配和出口:

export GOPATH=$HOME/go 
+5

此外,你可以用'go env'確認你的Go設置 - 如果沒有設置/不正確,它會顯示GOPATH。 – elithrar

+7

完成所有這些工作,使用'go get golang.org/x/tools/cmd/godoc'時仍然不起作用,'go env'甚至會打印出環境並且看起來很完美。 –

+0

我只想安裝Gogs,因爲Gitlab不能在我的服務器上工作,而且因爲配置錯誤,我再次在struggelin上工作了幾個小時....難以置信 –

1

我的$ GOROOT目錄與owner: rootgroup: wheel而不是我的創造所有者和管理員作爲組。我會猜測,當我不應該使用sudo時(或使用某種工具爲我做)時,我會使用sudo。因此,go get無法將軟件包寫入$ GOROOT,因此無法將軟件包寫入$GOPATH not setpermission denied錯誤。

通過在我的$ GOROOT上使用chownchgrp(使用-R獲取子文件夾)'go get ...'工作。在我的情況下,VS Code現在可以安裝我之前使用的Go組件。

+1

'我用sudo當我不應該'救了我 –

0

當您運行go env時,您應該能夠看到您的GOPATH是否已設置。 就我而言,這個命令解決了它,當我在終端上運行它時。

export GOPATH=/usr/local/bin 
0

我不得不設置GOPATH並將其與命令go env正確顯示。我必須使用chmod給go目錄提供正確的權限,並通過go get github.com/constabulary/gb/...安裝gb

0

首先做一個`去env'並檢查路徑GOROOT。因此設置GOPATH。 在我的情況下,它必須將GOPATH設置爲/ usr/lib/go。早些時候,我用/ usr/share/go和/ usr/bin/go試了一下,但沒有成功。

相關問題