go

¿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án GOPATH .

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, la go tool debería continuar funcionando como siempre.

Esto puede GOROOT configurando GOROOT en el entorno, que solo debe hacerse en circunstancias inusuales.
Tenga en cuenta que esto no afecta el resultado de la función runtime.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 :

  1. ejecute lo which go (en mi computadora: /usr/local/go/bin/go )
  2. luego exportar así export GOROOT=/usr/local/go

Si ves vacío para GOPATH :

  1. Cree cualquier directorio en cualquier lugar de su computadora para los proyectos de Go en mi caso: ~/GO_PROJECTS
  2. 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.

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


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 (o c:/Go en Windows), pero es posible instalar las herramientas de Go en una ubicación diferente. En este caso, debe configurar la variable de entorno GOROOT 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 ejecuta all.bash . Si elige no establecer $GOROOT , debe ejecutar gomake en lugar de make o gmake al desarrollar programas Go utilizando los makefiles convencionales.