no se puede descargar, GOP GOPATH no está 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?

Author: Mona Jalal, 2013-12-17

14 answers

[Actualizar: a partir de la versión 1.8, GOPATH por defecto es $HOME/go, pero aún puede encontrar esto útil si desea comprender el diseño de GOPATH, personalizarlo, etc.]

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

export GOPATH="$HOME/your-workspace-dir/" -- ejecútelo en su shell, luego agréguelo a ~/.bashrc o equivalente para que se establezca para usted en el futuro. Go instalará paquetes bajo src/, bin/, y pkg/, subdirectorios allí. Usted querrá poner sus propios paquetes en algún lugar debajo de $GOPATH/src, como $GOPATH/src/github.com/myusername/ si quieres publicar en GitHub. Probablemente también querrá export PATH=$PATH:$GOPATH/bin en su .bashrc para que pueda ejecutar programas compilados bajo $GOPATH.

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

Keith Rarick notas puede configurar GOPATH=$HOME para poner Go's src/, pkg/ y bin/ directorios justo debajo de su homedir. Eso puede ser bueno (por ejemplo, puede que ya tengas $HOME/bin en tu camino) pero por supuesto algunas personas usan múltiples espacios de trabajo, etc.

 122
Author: twotwotwo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-20 21:57:51

Este funcionó

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

Pasos

mkdir ~/go

Activa GOP GOPATH .bashrc,

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
 74
Author: suryakrupa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-11 02:44:24

Usando cerveza

Lo instalé usando brew.

$ brew install go

Cuando haya terminado, 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 PATH:/usr/local/opt/go/libexec / bin

Configurando el entorno de GO

Que muestra dónde se instaló GO. Tenemos que hacer lo siguiente para configurar GO's medio ambiente:

$ 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"

Configurar json2csv

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

$ go get github.com/jehiah/json2csv
$

¿Qué acaba de pasar? Lo instaló. Usted puede comprobar así:

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

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

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

Así que vamos a añadirlo temporalmente:

$ export PATH=$GOPATH/bin:$PATH

Y volver a comprobar:

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

Ahora está ahí: {[22]]}

$ 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

Añade las modificaciones que hemos hecho a $PATH y $GOPATH a tu $HOME/.bash_profile para que persistan entre reinicios.

 28
Author: slm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-09 16:31:28

Ver un vídeo

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 ser mostrado que ser dicho.

@jwfearn parafraseó la parte importante del video:

export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"

 16
Author: 0x434D53,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-08 06:24:01

Para MAC esto funcionó bien para mí.

sudo nano /etc/bashrc

Y añadir 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 un nuevo terminal y echo GOP GOPATH debería ver el valor correcto.

 3
Author: Shasti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-14 18:54:26

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

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
 3
Author: João Fernandes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 10:33:44

(para MAC)

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

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

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

Incluso glide me estaba dando el error GOPATH not set. Resuelto, de nuevo, por " alimentación forzada": Probé todas estas respuestas y, por alguna razón aún desconocida, ninguna funcionó.

Tuve que "forzar la alimentación" de la GOPATH por establecer la variable de entorno por cada comando que requiere.

sudo env GOPATH=$HOME/goWorkDirectory glide install

Espero que esto ayude a alguien.

 2
Author: zephel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-24 21:18:42

Su $GOROOT no debe configurarse. Usted $GOPATH debe establecerse en $HOME/go escribiendo export $GOPATH=$HOME/go

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

 2
Author: julien bouteloup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-19 13:29:55

Simplemente haz export GOPATH="/whatever/you/like/your/GOPATH/to/be".

 1
Author: Volker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-17 08:44:29

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

 0
Author: Julien Fouilhé,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-08 14:19:06

Puede utilizar la solución "exportar" al igual que lo que otros chicos han sugerido. Me gustaría ofrecerle otra solución para una comodidad permanente: puede usar cualquier ruta como GOPATH cuando ejecuta comandos Go.

En primer lugar, debe descargar una pequeña herramienta llamada gost : https://github.com/byte16/gost/releases . Si utiliza ubuntu, puede descargar linux version(https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz).

Entonces necesitas ejecutar los siguientes comandos para desempaquetarlo:

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

Obtendrías 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 ruta gost mantiene. Es necesario darle a la ruta un nombre que usaría más adelante.

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

Ejecutar cualquiera Ir comando que desea en el formato:

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

Por ejemplo, desea ejecutar go get github.com/go-sql-driver/mysql con /home/foobar/bar como GOPATH, simplemente hágalo de la siguiente manera:

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

Te ayudaría establecer la GOPATH y ejecutar el comando. Pero recuerda que has añadido la ruta a gost's pathspace. Si está bajo cualquier nivel de subdirectorios de /home/foobar/bar, incluso puede ejecutar el comando a continuación que haría lo mismo para abreviar :

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

gost es una sencilla Herramienta de Go que puede ayudar usted para administrar GOPATHs y ejecutar comandos Go. Para obtener más detalles sobre cómo usarlo para ejecutar otros comandos Go, simplemente puede ejecutar gost help goCmdName. Por ejemplo, si desea saber más sobre install, simplemente escriba las palabras a continuación en:

$ gost help install

También puedes encontrar más detalles en el README del proyecto: https://github.com/byte16/gost/blob/master/README.md

 0
Author: Franco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-28 09:00:41

Ejecute 'go env' y vea hacia dónde está apuntando su GOPATH actualmente. Si cambia a ese directorio, su ' go get..el comando etc ' debería funcionar.

 0
Author: Alexander Leon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-09 00:24:19

Este problema me ocurrió en raspberry pi. Había iniciado sesión a través del cliente VNC El problema persistió a pesar de establecer y exportar la GOPATH. Luego ejecutó el comando" go get " sin sudo y funcionó perfectamente.

 0
Author: mtamboli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-20 10:09:21

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

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

sudo -E go run main.go

Para obtener más información, consulte la discusión aquí: Google Groups-GOPATH Problem

 -1
Author: Pwdr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 11:19:30