¿Cómo configuro la variable de entorno GOPATH en Ubuntu? ¿Qué archivo debo editar?

Estoy tratando de hacer un bash:

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

y falla con el siguiente error:

 package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath 

cuando hago un go env , se muestra una lista de valores de Go como a continuación:

 ubuntu@ip-xxx-x-xx-x:~$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="" GORACE="" GOROOT="/usr/lib/go" GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread" CGO_ENABLED="1" 

claramente, el GOPATH no está configurado, ¿cómo y dónde lo configuro?

Veo muchos hilos que mencionan este error pero ninguno que proporciona una respuesta a mi pregunta, ¿qué archivo debe ser editado para proporcionar un valor para esta ruta?

Simplemente agregue las siguientes líneas a ~ / .bashrc y esto persistirá. Sin embargo, puede usar otras rutas que desee como GOPATH en lugar de $ HOME / go en mi muestra.

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

Ubuntu 14.04

 export GOPATH=$HOME/go 

Además, puede agregar esta cadena al archivo

 $HOME/.bashrc 

GOPATH debe establecerse en un directorio vacío recién creado. Este es el “espacio de trabajo” go, donde descarga paquetes, etcétera. Yo uso ~ / .go.

Por ejemplo:

 mkdir ~/.go echo "GOPATH=$HOME/.go" >> ~/.bashrc echo "export GOPATH" >> ~/.bashrc echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc source ~/.bashrc 

fuente: http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/

Si, por ejemplo, es un Ubuntu, después de instalar los paquetes:

 $sudo apt install golang -y 

Simplemente agregue las siguientes líneas a ~ / .bashrc (de su usuario)

 export GOROOT=/usr/lib/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 
 export GOPATH=/path/desired/here 

No es necesario editar ningún archivo, solo podemos usar el comando anterior para editar directamente las variables de entorno Go.

La solución más corta y actual .

Escribe este código en la Terminal.

 export GOPATH=path/to/your/gopath/directory 

Nota : Esto se restablecerá en cada nueva ventana del Terminal o reinicio del sistema.

Para ser persistente, pegue el código siguiente en su archivo .zshrc o .bashrc acuerdo con su shell. Esos archivos en su Directorio de inicio . Será como a continuación.

 export PATH=path/to/some/other/place/composer/for/example export GOPATH=path/to/your/gopath/directory export PATH=$PATH:$GOPATH/bin 

Si ha configurado cualquier cosa que necesite modificación de las variables de entorno, por ejemplo, Java, Go, etc., esto será muy familiar.

Asumiré que tiene la siguiente estructura de directorio en alguna parte como su ruta de acceso:

 \---[folder name] +---bin +---pkg \---src 
  • abrir una nueva terminal
  • tipo sudo nano /etc/environment
  • busca PATH=... y ve al final y agrega dos puntos : después de la última ruta, pega en tu go path completa go path p /home/user/gocode ej. /home/user/gocode

y ya terminaste, esto debería hacerlo persistente a través del sistema.

También necesitarás GOPATH más tarde. Así que ~/.bashrc a ~/.bashrc .

Esto es lo que lo hizo funcionar para mí en Ubuntu 15.10 utilizando la fish shell :

 # ~/.config/fish/config.fish set -g -x PATH /usr/local/bin $PATH set -g -x GOPATH /usr/share/go 

Luego tuve que cambiar los permisos en la carpeta go (se estableció en la raíz)

 sudo chown : -R /usr/share/go 

Con Go 1.8 (Q2 2017), no tendrá que editar ningún archivo si acepta el valor predeterminado de GOPATH (establecido para usted)

 $HOME/go 

Puede ver los comentarios sobre el número 17262 y el voto de Twitter asociado :

Al elegir un GOPATH predeterminado, podemos facilitar nuestra documentación porque podemos decir cosas como

 $ go get github.com/foo/bar 

revisará el repository github.com/foo/bar en $HOME/go/src/github.com/foo/bar .

No necesitamos distraer a los recién llegados con tener que establecer un env var, todo lo que tenemos que hacer es poner una pequeña nota entre paréntesis en la parte inferior de la página.

$HOME/go es la ruta predeterminada para ir a su espacio de trabajo.
Si desea cambiar esta ruta, configure la variable GOPATH a su elección.

ir ruta podría estar en cualquier lugar que desee simplemente crear un directorio y establecer la variable de ruta global en el nombre de GOPATH a su entorno.

 mkdir ~/go export GOPATH=~/go go get github.com/go-sql-driver/mysql 

Mi entorno go se parecía al tuyo.

 $go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="" GORACE="" GOROOT="/usr/lib/go-1.6" GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_amd64" GO15VENDOREXPERIMENT="1" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0" CXX="g++" CGO_ENABLED="1" 

Lo resolví configurando GOPATH en / usr / lib / go . Pruébalo.

 export GOPATH=/usr/lib/go export PATH=$PATH:$GOPATH/bin 

GOPATH es una variable de entorno para su ubicación en el espacio de trabajo. GOROOT es una variable de entorno para su directorio de instalación. Aunque GOROOT y GOPATH se configuran automáticamente (si no hubiera un error) durante el tiempo de instalación, para especificarlo manualmente puede seguir el proceso a continuación. Además, para obtener más información, puede consultar la página wiki de GO .

Es mejor configurar GOPATH en un directorio dentro de su directorio principal, por ejemplo, $ HOME / go,% USERPROFILE% \ go (Windows).

  1. Esta es una solución mac, que se prueba en macOS Sierra, ver. 10.12, y también en Gogland-EAP, que se introdujo como un IDE para la progtwigción de Go por JetBrains.

En tu tipo de Terminal

 vim ~/.profile 

en el documento abierto en la Terminal presione i y agregue la siguiente ruta

 GOPATH=/path/to/a/directory/inside/home/directory GOROOT=/path/to/you/go/library PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin 

presione ESC y escriba : x . Por último, debe reiniciar ( cerrar y abrir ) su terminal o cerrar sesión e iniciar sesión de nuevo.

  1. Para la configuración de Windows y Linux, consulte Ir a la página wiki en Githab en Setting GOPATH-Golang .

PRECAUCIÓN No configure tanto GOROOT como GOPATH en el mismo directorio, de lo contrario recibirá una advertencia.

Esto ha sido lo más molesto de tratar. Con la esperanza de ahorrar tu tiempo.

IF go se instaló como usuario root. El usuario raíz del archivo de texto bash_profile ~ / .bash_profile de su sistema debe tener $ GOROOT asignado al directorio de instalación go y $ GOPATH debe asignarse al directorio go / src.

  ...$# sudo su ...$# vi ~/.bash_profile ***Story continues in vi editor*** GOROOT=$GOROOT:/usr/local/go GOPATH=$GOPATH:/usr/local/go/src ... [your regular PATH stuff here] ... 

asegúrate de que el camino para ir binario está en tu camino en .bash_profile

RUTA = $ RUTA: $ HOME / bin: / usr / local / bin: / usr / local / go / bin

Esta RUTA puede ser tan larga como la cuerda que necesita ser … para agregar elementos nuevos simplemente separados por dos puntos:

salir del editor vi y guardar el perfil bash (: wq significa escribir y salir)

  [esc] [shift] + [:] :wq 

Debe cerrar sesión en la terminal y volver a iniciar sesión para iniciar nuevamente el perfil … o puede iniciarlo utilizando export.

 ...$# export GOPATH=/usr/local/go/src 

Puedes verificar go env:

 ...$# go env 

¡Hurra!

 GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/usr/local/go/src" GORACE="" GOROOT="/usr/local/go" 

Ahora puede sudo y go podrá descargar y crear directorios dentro de go / src y podrá acceder a lo que estaba tratando de hacer.

ejemplo

 # sudo go get github.com/.. 

Ahora te encontrarás con otro problema … es posible que no hayas instalado git … esa es otra aventura … 🙂

En mi máquina Fedora 20 agregué las siguientes líneas a mi ~ / .bashrc:

 export GOROOT=/usr/lib/golang export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 

Como está escrito en las instrucciones oficiales :

La variable de entorno GOPATH especifica la ubicación de su espacio de trabajo. Se establece de manera predeterminada en un directorio llamado ir dentro de su directorio principal, por lo tanto $ HOME / continuar Unix, $ home / go on Plan 9 y% USERPROFILE% \ go (usualmente C: \ Users \ YourName \ go) en Windows. Si desea trabajar en una ubicación diferente, deberá establecer GOPATH en la ruta a ese directorio. (Otra configuración común es establecer GOPATH = $ HOME.) Tenga en cuenta que GOPATH no debe ser la misma ruta que su instalación de Go.

Entonces, por ejemplo, si está codificando en Jetbrains Webstorm (usando el complemento Go ), es posible que desee establecer GOPATH como /Users//WebstormProjects .

En palabras más simples, configúrelo donde desee que residan sus proyectos Go.

Otra solución más: exportar todas las variables de entorno GO* de go env

.bashrc:

 eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do echo "export $setenv; " done 2> /dev/null) [[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin" [[ -n $GOROOT ]] || export GOROOT=/usr/bin/go export PATH="$PATH:$GOPATH/bin:$GOROOT/bin" 

Edite su ~/.bash_profile para agregar la siguiente línea:

 $ export GOPATH=$HOME/work 

Guarde y salga de su editor. Luego, fuente su ~/.bash_profile

 $ source ~/.bash_profile 

Nota: Establezca la ruta GOBIN para generar un archivo binario cuando se ejecute ir a instalar

 $ export GOBIN=$HOME/work/bin 

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 

Tendrás un gost ejecutable. 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 gost mantiene. 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 go get github.com/go-sql-driver/mysql con /home/foobar/bar como GOPATH, solo hazlo 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 a configurar GOPATH y ejecutar el comando. Pero recuerde que ha agregado la ruta al gost ruta 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 es una Herramienta simple de Go que puede ayudarte a administrar GOPATH y ejecutar comandos de Go. Para obtener más detalles sobre cómo usarlo para ejecutar otros comandos de Go, simplemente puede ejecutar la gost help goCmdName . Por ejemplo, si desea saber más sobre la install , simplemente escriba las palabras a continuación en:

 $ gost help install 

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

Este script lo ayudará a cambiar Gopaths. https://github.com/buffonomics/goswitch