2011-11-01 16 views
171

sto cercando di installare Doozer come questoquali dovrebbero essere i valori di GOPATH e GOROOT?

$ goinstall github.com/ha/doozer 

ricevo questi errori.

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

@Motin sul link qui sopra non è più valida –

+0

Il file è diventato obsoleto per il progetto. Un problema correlato a OSX si trova qui: https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841 – Motin

+0

Nota: per impostazione predefinita, GOPATH' verrà impostato per tu in Go 1.8 (2017). Vedi [la mia risposta sotto] (http://stackoverflow.com/a/40238276/6309) – VonC

risposta

152

GOPATH è discusso in the cmd/go documentation:

I GOPATH ambiente lista Sale variabili per cercare il codice Go. Su Unix, il valore è una stringa separata da due punti. Su Windows, il valore è una stringa separata da punto e virgola. Nel piano 9, il valore è un elenco.

GOPATH deve essere impostato per ottenere, compilare e installare pacchetti all'esterno dell'albero standard Go .

GOROOT è discusso in the installation instructions:

Le distribuzioni binarie Go scontato che saranno installati in /usr/local/go (o c:\Go in Windows), ma è possibile installare gli strumenti andare in un diverso Posizione. In questo caso è necessario impostare la variabile di ambiente GOROOT in modo che punti alla directory in cui era installato .

Per esempio, se avete installato Vai alla vostra directory home è necessario aggiungere i seguenti comandi per $HOME/.profile:

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

Nota:GOROOT devono essere impostati solo quando si installa in un percorso personalizzato.

(. Versione aggiornata di Chris Bunch's answer)

+30

Informazioni molto più complete su GOPATH si trovano in [Come scrivere Go Code.] (Http://golang.org/doc/code.html) Una comprensione delle informazioni necessarie per comprendere il comando 'go', che è essenziale per lavorare con Go. Ad esempio l'uso di 'goinstall' nell'OP dovrebbe ora essere 'go get'. – Sonia

+8

Nota anche il percorso di installazione effettivo di go. Ad esempio, in una configurazione homebrew predefinita, homebrew installerà go in/usr/local/Cellar/go/'. In questo caso il percorso di esportazione deve essere impostato con 'export GOROOT =/usr/local/Cellar/go/{version}' e 'export PATH = $ PATH: $ GOROOT/bin'. – ekillaby

+7

Ho dovuto eseguire 'export GOROOT =/usr/local/Cellar/go/1.2/libexec /' per far funzionare il mio con brew. –

36

GOPATH è discusso here:

Il GOPATH Variabile di ambiente

GOPATH può essere impostato ad una lista separata da due punti di percorsi all'interno che vanno codice, oggetti di pacchetto, ed eseguibili maggio Essere trovato.

impostare un GOPATH utilizzare goinstall per costruire e installare il proprio codice e librerie esterne al di fuori della struttura Go (e di evitare di scrivere Makefiles).

E GOROOT è discusso here:

$GOROOT La radice dell'albero Go, spesso $HOME/go. Il valore predefinito è il padre della directory in cui viene eseguito all.bash. Se non si sceglieset $GOROOT, è necessario eseguire gomake anziché make o gmake quando sviluppa programmi Go utilizzando i makefile convenzionali.

+0

quindi se devo andare su ~/projects/go, quali dovrebbero essere i valori della variabile per trovare os, fmt, etc? – jshen

+1

Quindi, dove installare Go quando si suda apt-get install golang'? – weberc2

+7

@ weberc2 se esegui 'go env' dovresti vedere quell'informazione, per me era'/usr/lib/go/' – Andre

14

ho letto le go help gopath docs ed era ancora incredibilmente confuso, ma trovato questa piccola pepita da un'altra pagina Vai doc:

L'ambiente GOPATH specifica variabile la posizione del tuo spazio di lavoro. È probabilmente l'unica variabile di ambiente che dovrai impostare durante lo sviluppo del codice Go.

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

6

Come accennato in precedenza: variabile d'ambiente

Il GOPATH specifica la posizione del spazio di lavoro.

Per Windows, questo ha funzionato per me (in una finestra MS-DOS):

set GOPATH=D:\my_folder_for_go_code\ 

Questo crea una variabile GOPATH che MS-DOS riconosce quando viene utilizzato come segue:

cd %GOPATH% 
55

Ecco una mia configurazione semplice:

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 sono impostati come segue:

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

Così, in breve:

GOROOT è per compilatore/strumenti che proviene da installazione go.
GOPATH è per i propri progetti/librerie di terze parti (scaricate con "go get").

+2

Grazie per la spiegazione. Non saremmo qui se la lettura del manuale fosse sufficiente. – mikijov

+0

Molto buono! Questo ha funzionato per me. – PlagTag

-3

Se si utilizza la distro andare, è necessario indicare al punto in cui il file include sono, ad esempio:

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

(Questo è per Fedora 20)

7

Il GOPATH dovrebbe non punto all'installazione Go, ma piuttosto al tuo spazio di lavoro (vedi https://golang.org/doc/code.html#GOPATH). Ogni volta che installi alcuni pacchetti con go get o go install, arriveranno all'interno di GOPATH. Questo è il motivo per cui ti avverte che sicuramente fai non vuoi che i pacchetti casuali da Internet vengano scaricati nella tua installazione ufficiale.

11

Prima corsa go env
Se si vede che il go non è installato, è possibile installarlo tramite homebrew o tramite pacchetto e/o altri modi.
Se visualizzi l'output, il tuo go è installato.
Mostra tutti gli env impostati e non lo sono.

Se vedete vuota per GOROOT:

  1. run `che go` (Sul mio computer:/usr/local/go/bin/go)
  2. quindi esportare come questo GOROOT export =/usr/local/go

Se vedete vuota per GOPATH:

  1. creare qualsiasi cartella sul vostro computer per i progetti go nel mio caso: ~/GO_PROJEC TS
  2. poi export GOPATH = ~/GO_PROJECTS
+2

'che va 'fatto per me. Stava usando un'altra posizione di installazione da un'installazione precedente usando Chocolatey. Cancellata quella cartella e rimossa dalla variabile PATH. Ora funziona. Grazie! – sgarg

4

partire con Go 1.8 (Q2 2017), GOPATH verrà impostata per default a $ HOME/go

Vedi issue 17262 e il commento di Rob Pike:

$HOME/go sarà.
Non c'è una sola risposta migliore, ma questa è breve e dolce, e può essere un problema scegliere il nome solo se esiste già $HOME/go, che sarà felice solo per gli esperti che sono già stati installati e capiranno GOPATH.

2

Riguardo a GOROOT in particolare, Go 1.9 lo imposterà automaticamente sul percorso di installazione.
Anche se è installato più di Go, chiamando il 1.9.x uno si imposta GOROOT su /path/to/go/1.9 (prima, se non impostato, presupponeva un percorso predefinito come /usr/local/go o c:\Go).

Vedi CL Go Review 53370:

Il go tool sarà ora utilizzare il percorso da cui è stato invocato per tentare di localizzare la radice del Go installazione dell'albero.
Ciò significa che se l'intera installazione di Go viene spostata in una nuova posizione, il go tool dovrebbe continuare a funzionare normalmente.

L'impostazione può essere annullata impostando GOROOT nell'ambiente, operazione che deve essere eseguita solo in circostanze insolite.
Si noti che ciò non influisce sul risultato dello runtime.GOROOT() function, che continuerà a segnalare il percorso di installazione originale; questo può essere risolto nelle versioni successive.

0

in OSX, ho installato con birra, qui è l'impostazione che funziona per me

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

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