no se puede descargar, $ GOPATH no configurado

Quiero instalar json2csv usando go get github.com/jehiah/json2csv pero recibo este error:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path

¿Alguna ayuda sobre cómo solucionar esto en MacOS?

0
Estoy teniendo el mismo problema con un paquete diferente (cachorro). C'mon Go mantenedores, ¡por favor haga un instalador (OS X) que termine el trabajo! El instalador de OS X para Node es un gran ejemplo. El uso de Node no requiere pasos de instalación manual adicionales. Simplemente funciona. Espero que las versiones futuras del instalador Go sean mejores.
agregado el autor jwfearn, fuente
agregado el autor Shog9, fuente
agregado el autor Damien MATHIEU, fuente

14 Respuestas

Your $GOROOT should not be set up. You $GOPATH should be set to $HOME/go by typing export $GOPATH=$HOME/go

Por favor, escriba export GOROOT = "" para solucionar su problema.

0
agregado

Solo haz exportar GOPATH = "/ whatever/you/like/your/GOPATH/to/be" .

0
agregado
Si soy un novato, aún no sé "dónde me gustaría que mi GOPATH sea". En mi humilde opinión, es una resistencia que no hay un comportamiento predeterminado GOPATH que pueda ser anulado por una variable de entorno.
agregado el autor jwfearn, fuente

Tuve que ejecutar una aplicación como root (para abrir un servidor web en el puerto 80), esto produjo el error para mí, porque el usuario sudo tiene un entorno diferente al del usuario normal, por lo tanto, no se configuró GOPATH.

Si alguien más tiene este problema, agregue -E al comando, esto preservará el entorno del usuario.

sudo -E ve a ejecutar main.go

For more infos see discussion here: Google Groups – GOPATH Problem

0
agregado
No estoy seguro de por qué esto fue downvoted, pero lo arregló para mí ...
agregado el autor Pwdr, fuente

Usando cerveza

Lo instalé usando brew .

$ brew install go

Cuando lo haya hecho si ejecuta este comando brew, mostrará la siguiente información:

$ brew info go
go: stable 1.4.2 (bottled), HEAD
Go programming environment
https://golang.org
/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--with-cc-all
    Build with cross-compilers and runtime support for all supported platforms
--with-cc-common
    Build with cross-compilers and runtime support for darwin, linux and windows
--without-cgo
    Build without cgo
--without-godoc
    godoc will not be installed for you
--without-vet
    vet will not be installed for you
--HEAD
    Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin

Las piezas importantes son estas líneas:

/usr/local/Cellar/go/1.4.2 (4676 archivos, 158M) *

     

export PATH = $ PATH:/usr/local/opt/go/libexec/bin

Configurando el entorno de GO

Eso muestra dónde se instaló GO. Necesitamos hacer lo siguiente para configurar el entorno de GO:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin

Luego puede verificar usando GO para ver si está configurado correctamente:

$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/usr/local/opt/go/bin"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

Configurando json2csv

Se ve bien, así que vamos a instalar json2csv :

$ go get github.com/jehiah/json2csv
$

¿Lo que acaba de suceder? Lo instaló. Puedes verificar de esta manera:

$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv

OK, entonces ¿por qué no puedo escribir json2csv en mi shell? Esto se debe a que el directorio /bin en $ GOPATH no está en su $ PATH .

$ type -f json2csv
-bash: type: json2csv: not found

Así que vamos a agregarlo temporalmente:

$ export PATH=$GOPATH/bin:$PATH

Y vuelva a verificar:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)

Ahora está ahí:

$ json2csv --help
Usage of json2csv:
  -d=",": delimiter used for output values
  -i="": /path/to/input.json (optional; default is stdin)
  -k=[]: fields to output
  -o="": /path/to/output.json (optional; default is stdout)
  -p=false: prints header to output
  -v=false: verbose output (to stderr)
  -version=false: print version string

Agregue las modificaciones que hemos hecho a $ PATH y $ GOPATH a su $ HOME/.bash_profile para que persistan entre reinicios.

0
agregado

[Actualización: a partir de Go 1.8, GOPATH está por defecto en $ HOME/go , pero aún puede resultarle útil si quiere entender el GOPATH diseño, personalícelo, etc.]

El sitio oficial de Go trata sobre GOPATH y cómo diseñar un directorio de espacio de trabajo .

export GOPATH="$HOME/your-workspace-dir/" -- run it in your shell, then add it to ~/.bashrc or equivalent so it will be set for you in the future. Go will install packages under src/, bin/, and pkg/, subdirectories there. You'll want to put your own packages somewhere under $GOPATH/src, like $GOPATH/src/github.com/myusername/ if you want to publish to GitHub. You'll also probably want export PATH=$PATH:$GOPATH/bin in your .bashrc so you can run compiled programs under $GOPATH.

Opcionalmente, a través de Rob Pike , también puede configurar CDPATH para que sea más rápido para cd para empacar dirs en bash: export CDPATH =.: $ GOPATH/src/github.com: $ GOPATH/src/golang.org/x significa que puede escriba cd net/html en lugar de cd $ GOPATH/src/golang.org/x/net/html .

Keith Rarick notas puede establecer GOPATH = $ HOME para poner Go's < directorios de código> src/, pkg/ y bin/ justo debajo de su homedir. Eso puede ser agradable (por ejemplo, es posible que ya tenga $ HOME/bin en su ruta) pero, por supuesto, algunas personas usan múltiples espacios de trabajo, etc.

0
agregado
Gracias por la info. ¿Necesita cambiar su espacio de trabajo para cada proyecto individual?
agregado el autor Doug Molineux, fuente
@ Tyguy7 es probable que no lo haya exportado ; ejecute /bin/bash -c "echo \ $ GOPATH" para verificar que los subprocesos puedan ver $ GOPATH ; si aparece vacío, ejecute export GOPATH y luego go get ...
agregado el autor sanmai, fuente
En general, no, puede usar un espacio de trabajo cuyo src/ contiene, p. github.com/youruser/x y github.com/youruser/y . Eso es lo que hago. Las personas pueden tener sus razones para hacer lo contrario (¿política de la compañía para mantener los proyectos separados?), Pero no puedo hablar de eso.
agregado el autor twotwotwo, fuente
¿Qué plataforma (Windows o Linux/OS X/otro Unix)? Si no es Windows, ¿qué dice echo $ GOPATH ? Podría valer la pena publicarlo como una pregunta separada; parece que estás en una situación inusual, y la depuración de los comentarios puede ser complicado.
agregado el autor twotwotwo, fuente
$ GOPATH está configurado, pero "no se puede descargar, $ GOPATH no configurado. Para obtener más detalles, vea: go help gopath" aparece de todos modos.
agregado el autor Tyguy7, fuente

Si se encuentra con este problema después de configurar $ GOPATH , puede ser porque lo está ejecutando con un shell no compatible. Estaba usando fish y no funcionó, lo inicié con bash funcionó bien.

0
agregado

Mira un video

En general, siempre recomiendo este video oficial de Go para obtener una visión general rápida sobre el asunto:

http://www.youtube.com/watch?v=XCsL89YtqCs

Es más fácil que se muestre que que se lo digan.

@jwfearn paraphrased the important part of the video:

export GOPATH = "$ {HOME}/gocode"; PATH de exportación = "$ {RUTA}: $ {GOPATH}/bin"; mkdir -p "$ {GOPATH}"

0
agregado
Excelente video introductorio: siempre entiendo mejor cuando me lo muestran.
agregado el autor Joshua Pinter, fuente
Gracias @jwfearn: los videos son para música y otros entretenimientos; no puedo copiar y pegar de ellos :-)
agregado el autor kguest, fuente

Este trabajó

Configuración del entorno de desarrollo Go en Ubuntu y cómo solucionar $ GOPATH/$ GOROOT

Pasos

mkdir ~/go

Establecer $ GOPATH en .bashrc,

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
0
agregado
Link está muerto ahora.
agregado el autor Aman Deep Gautam, fuente

Para MAC esto funcionó bien para mí.

sudo nano /etc/bashrc

y agregue lo siguiente al final del archivo

export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin

Esto debería solucionar el problema. Intente abrir una nueva terminal y echo $ GOPATH, debería ver el valor correcto.

0
agregado

(para MAC)

Intenté todas estas respuestas y, por alguna razón aún desconocida, ninguna de ellas funcionó.

Tuve que "forzar la alimentación" de GOPATH configurando la variable de entorno por cada comando que lo requería. Por ejemplo:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

Even glide was giving me the GOPATH not set error. Resolved it, again, by "force feeding": Intenté todas estas respuestas y, por alguna razón aún desconocida, ninguna de ellas funcionó.

Tuve que "forzar la alimentación" de GOPATH configurando la variable de entorno por cada comando que lo requería.

sudo env GOPATH=$HOME/goWorkDirectory glide install

Espero que esto ayude a alguien.

0
agregado

Me pareció más fácil hacerlo así:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
0
agregado

Puede usar la solución de "exportación" tal como lo sugirieron otros tipos. Me gustaría ofrecerle otra solución para su comodidad permanente: puede usar cualquier ruta como GOPATH cuando ejecuta los comandos de Go.

En primer lugar, debe descargar una pequeña herramienta llamada gost : https://github .com/byte16/gost/releases . Si usa ubuntu, puede descargar la versión de Linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

Luego debe ejecutar los siguientes comandos para descomprimirlo:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

Obtendrás un ejecutable gost . Puede moverlo a /usr/local/bin para un uso conveniente:

$ sudo mv gost /usr/local/bin

Ejecute el siguiente comando para agregar la ruta que desea usar como GOPATH en el espacio de acceso gost . Se requiere dar un nombre a la ruta que usarías más tarde.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

Ejecute cualquier comando Go que desee en el formato:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

Por ejemplo, si desea ejecutar vaya a obtener github.com/go-sql-driver/mysql con /home/foobar/bar como GOPATH, simplemente hágalo como se muestra a continuación. :

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

Te ayudaría a configurar GOPATH y ejecutar el comando. Pero recuerde que ha agregado la ruta al espacio de acceso de gost . Si se encuentra bajo cualquier nivel de subdirectorios de /home/foobar/bar , incluso puede ejecutar el siguiente comando, que haría lo mismo para abreviar:

$ gost get -- github.com/go-sql-driver/mysql

gost is a Simple Tool of Go which can help you to manage GOPATHs and run Go commands. For more details about how to use it to run other Go commands, you can just run gost help goCmdName. For example you want to know more about install, just type words below in:

$ gost help install

You can also find more details in the README of the project: https://github.com/byte16/gost/blob/master/README.md

0
agregado

Ejecute 'go env' y vea hacia dónde apunta su GOPATH. Si cambias a ese directorio, tu comando 'go get..etc' debería funcionar.

0
agregado

Este problema me ocurrió en raspberry pi. Me había conectado a través del cliente de VNC El problema persistió a pesar de configurar y exportar el GOPATH. Luego ejecuté el comando "go get" sin sudo y funcionó perfectamente.

0
agregado