¿Cuáles deberían ser los valores de GOPATH y GOROOT?
(12)
A partir de go 1.8 (Q2 2017), GOPATH se configurará de manera predeterminada en $ HOME / go
Ver el número 17262 y el comentario de Rob Pike:
$HOME/go
ya está.
No hay una sola respuesta mejor, pero esta es breve y dulce, y solo puede ser un problema elegir ese nombre si ya existe$HOME/go
, lo que solo será feliz para los expertos que ya han instalado y entenderánGOPATH
.
Estoy tratando de instalar Doozer como este
$ goinstall github.com/ha/doozer
Me sale estos errores.
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
Aquí está mi configuración simple:
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 se establecen de la siguiente manera:
export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Entonces, en resumen:
GOROOT es para compilador / herramientas que viene de la instalación de go.
GOPATH es para tus propios proyectos go / bibliotecas de terceros (descargadas con "go get").
Como se ha mencionado más arriba:
La variable de entorno GOPATH especifica la ubicación de su espacio de trabajo.
Para Windows , esto funcionó para mí (en la ventana Ms-dos):
set GOPATH=D:/my_folder_for_go_code/
Esto crea una variable GOPATH que Ms-dos reconoce cuando se usa de la siguiente manera:
cd %GOPATH%
Con respecto a GOROOT
específicamente, Go 1.9 lo establecerá automáticamente en su ruta de instalación.
Incluso si tiene varios Go instalados, al llamar a 1.9.x, se establecerá GOROOT
en /path/to/go/1.9
(antes, si no estaba configurado, asumía una ruta predeterminada como /usr/local/go
o c:/Go
).
Ver CL Go Review 53370 :
La
go tool
ahora usará la ruta desde la cual se invocó para intentar localizar la raíz del árbol de instalación de Go .
Esto significa que si toda la instalación de Go se traslada a una nueva ubicación, lago tool
debería continuar funcionando como siempre.Esto puede
GOROOT
configurandoGOROOT
en el entorno, que solo debe hacerse en circunstancias inusuales.
Tenga en cuenta que esto no afecta el resultado de la funciónruntime.GOROOT()
, que continuará informando la ubicación de instalación original; Esto puede ser arreglado en versiones posteriores.
En primer lugar go env
.
Si ve que no está instalado el sistema operativo, puede instalarlo a través de homebrew o por medio de un paquete u otras formas.
Si estás viendo salida entonces tu go está instalado.
Te muestra todos los envs que están configurados y no.
Si ves vacío para GOROOT
:
- ejecute lo
which go
(en mi computadora:/usr/local/go/bin/go
) - luego exportar así
export GOROOT=/usr/local/go
Si ves vacío para GOPATH
:
- Cree cualquier directorio en cualquier lugar de su computadora para los proyectos de Go en mi caso:
~/GO_PROJECTS
- luego
export GOPATH=~/GO_PROJECTS
GOPATH no debe apuntar a la instalación de Go, sino a su área de trabajo (consulte https://golang.org/doc/code.html#GOPATH ). Cada vez que instales algún paquete con go get o go install, aterrizará dentro de GOPATH. Es por eso que le advierte que definitivamente no desea que se descarguen paquetes aleatorios de Internet en su instalación oficial.
Leí el go help gopath
docs y todavía estaba increíblemente confundido, pero encontré este pequeño nugget en otra página de Go Doc:
La variable de entorno GOPATH especifica la ubicación de su espacio de trabajo. Es probable que sea la única variable de entorno que deberá establecer al desarrollar el código Go.
Si está utilizando la distro go, debe señalar dónde están los archivos de inclusión, por ejemplo:
$ rpm -ql golang | grep include
/usr/lib/golang/include
(Esto es para Fedora 20)
Tuve que adjuntar
export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
a mi ~ / .bash_profile en Mac OS X
en osx, lo instalé con brew, aquí está la configuración que me funciona
GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
GOROOT="/usr/local/Cellar/go/1.10/libexec"
GOPATH
se discute en la documentación de cmd/go
:
La variable de entorno
GOPATH
enumera lugares para buscar el código Go. En Unix, el valor es una cadena separada por dos puntos. En Windows, el valor es una cadena separada por punto y coma. En el Plan 9, el valor es una lista.
GOPATH
debe configurarse para obtener, compilar e instalar paquetes fuera del árbol Go estándar.
GOROOT
se discute en las instrucciones de instalación :
Las distribuciones binarias de Go asumen que se instalarán en
/usr/local/go
(oc:/Go
en Windows), pero es posible instalar las herramientas de Go en una ubicación diferente. En este caso, debe configurar la variable de entornoGOROOT
para que apunte al directorio en el que se instaló.Por ejemplo, si instaló Vaya a su directorio de inicio, debe agregar los siguientes comandos a
$HOME/.profile
:
export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin
Nota:
GOROOT
debe configurarse solo cuando se instala en una ubicación personalizada.
(Versión actualizada de la respuesta de Chris Bunch .)
GOPATH
se discute here :
La variable de entorno
GOPATH
GOPATH
se puede establecer en una lista de rutas separadas por dos puntos dentro de los cuales se pueden encontrar el código Go, los objetos del paquete y los ejecutables.Configura un
GOPATH
para usar goinstall para construir e instalar tu propio código y bibliotecas externas fuera del árbol de Go (y para evitar escribir Makefiles).
Y GOROOT
se discute here :
$GOROOT
La raíz del árbol Go, a menudo$HOME/go
. Esto se establece de forma predeterminada en el padre del directorio donde se ejecutaall.bash
. Si elige no establecer$GOROOT
, debe ejecutar gomake en lugar de make o gmake al desarrollar programas Go utilizando los makefiles convencionales.