2011-11-01 65 views
171

我試圖安裝道崎這樣GOPATH和GOROOT的值應該是什麼?

$ 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 
+3

的設置不再有效 –

+0

文件變得過時的項目。在這裏找到與OSX相關的相關問題:https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841 – Motin

+0

注意:默認情況下,'GOPATH'將被設置爲你在Go 1.8(2017)。見[我的回答如下](http://stackoverflow.com/a/40238276/6309) – VonC

回答

152

GOPATH討論in the cmd/go documentation

GOPATH環境變量列表地方尋找Go代碼。在 Unix上,該值是冒號分隔的字符串。在Windows上,值爲 ,以分號分隔的字符串。在計劃9中,該值是一個列表。

GOPATH必須設置爲獲取,構建和安裝 標準Go樹之外的軟件包。

GOROOTthe installation instructions討論:

轉到二進制分發假設它們將被安裝在 /usr/local/go(或c:\Go Windows下),但它可以安裝 轉到工具不同位置。在這種情況下,您必須將 GOROOT環境變量設置爲指向其安裝的目錄 。

例如,如果您安裝轉到你的home目錄你應該添加 以下命令來$HOME/.profile

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

注:GOROOT必須安裝到自定義位置時,纔可以設置。

(更新版的Chris Bunch's answer

+30

關於GOPATH的更全面的信息是在[如何編寫Go代碼。](http:/ /golang.org/doc/code.html)掌握這些信息是理解go命令所必需的,這對於使用Go來說是必不可少的。例如,在OP中使用'goinstall'現在應該是'go get'。 – Sonia

+8

另請注意go的實際安裝路徑。例如,在默認的自制軟件設置中,自制軟件將安裝在'/ usr/local/Cellar/go /'中。在這種情況下,應該使用'export GOROOT =/usr/local/Cellar/go/{version}'和'export PATH = $ PATH:$ GOROOT/bin'設置導出路徑。 – ekillaby

+7

我不得不''出口GOROOT =/usr/local/Cellar/go/1.2/libexec /'來讓我的brew工作。 –

36

GOPATH討論here

GOPATH環境變量

GOPATH可以被設置爲的其內部轉到 代碼,包對象路徑的冒號分隔的列表,和可執行文件可以被發現。

設置一個GOPATH使用goinstall構建和安裝自己的代碼和 外部庫轉到樹以外(和避免編寫 Makefile文件)。

而且GOROOT討論here

$GOROOT轉到樹的根,常$HOME/go。默認爲運行all.bash的目錄的父目錄的 。如果您選擇不 集合$GOROOT,則在使用傳統makefile開發Go程序時,您必須運行gomake而不是make或gmake。

+0

所以如果我已經安裝在〜/ projects/go中,變量的值應該是什麼值才能找到os,fmt等? – jshen

+1

那麼當你安裝'sudo apt-get install golang'時,安裝到哪裏? – weberc2

+7

@ weberc2如果你運行'go env',你應該可以看到這些信息,對我來說它就是'/ usr/lib/go /' – Andre

14

我讀了go help gopath文檔和仍然令人難以置信的困惑,卻發現這個小金塊從別的去了文檔頁面:

的GOPATH環境變量指定工作區的位置。這可能是開發Go代碼時需要設置的唯一環境變量。

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

6

如上所述:

的GOPATH環境變量指定的 工作區的位置。

對於Windows,這個工作對我來說(在MS-DOS窗口):

set GOPATH=D:\my_folder_for_go_code\ 

這將創建一個GOPATH變量,MS-DOS識別使用如下的時候:

cd %GOPATH% 
55

這是我的簡單設置:

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,路徑設置如下:

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

因此,簡而言之:

GOROOT是編譯器/工具,來自去安裝。
GOPATH適用於您自己的項目/第三方庫(以「go get」下載)。

+2

感謝您的解釋。如果閱讀手冊就足夠了,我們不會在這裏。 – mikijov

+0

非常好!這使它爲我工作。 – PlagTag

-3

如果您使用的是發行版去,你應該指向包含文件,例如:

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

(這是爲Fedora 20)

7

的GOPATH應該點到Go安裝,而是到您的工作區(請參閱https://golang.org/doc/code.html#GOPATH)。每當你安裝一些軟件包去安裝,它會在GOPATH內着陸。這就是爲什麼它警告你,你絕對是做而不是想從互聯網隨機包被轉儲到您的官方安裝。

11

首次運行go env
如果您發現未安裝,您可以通過自制軟件或通過軟件包和/或其他方式進行安裝。
如果你看到輸出,那麼你的安裝就會被安裝。
它顯示你所有的設置,而不是。

如果你看空的GOROOT:

  1. 運行`這go`(在我的電腦:在/ usr /本地/去/斌/去)
  2. 然後導出這樣的出口GOROOT =/USR /本地/去

如果你看空的GOPATH:

  1. 你的電腦在我的話,請項目上創建任何目錄下的任何地方:〜/ GO_PROJEC TS
  2. 然後出口GOPATH =〜/ GO_PROJECTS
+2

'哪去'爲我做了。它正在使用巧克力之前安裝的另一個安裝位置。刪除該文件夾並將其從PATH變量中刪除。現在它可以工作。謝謝! – sgarg

4

一起去1.8(Q2 2017),GOPATH將是您在默認情況下爲$ HOME /套去

issue 17262和羅伯派克的評論開始:

$HOME/go它會。
沒有單一的最佳答案,但這是短暫而甜蜜的,只有在$HOME/go已存在的情況下選擇該名稱纔會出現問題,這對於已安裝並會理解GOPATH的專家來說只會很開心。

2

關於GOROOT具體來說,Go 1.9會自動將其設置爲安裝路徑。
即使你安裝了多個圍棋,調用1.9.x的一個將設置GOROOT/path/to/go/1.9(之前,如果沒有設置,它假定像/usr/local/goc:\Go默認路徑)。

CL Go Review 53370

go tool現在將使用從它被調用的路徑,試圖找到圍棋的安裝根樹
這意味着如果將整個Go安裝移至新位置,則go tool應繼續照常工作。

在環境中設置GOROOT可能會覆蓋此設置,只能在特殊情況下進行。
請注意,這不會影響runtime.GOROOT() function的結果,該結果將繼續報告原始安裝位置;這可能會在以後的版本中修復。

0

在OSX,我安裝了BREW,這裏是@Motin上面的鏈接,我的作品

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

GOROOT="/usr/local/Cellar/go/1.10/libexec" 
相關問題