web-dev-qa-db-fra.com

comment puis-je SET la variable d'environnement GOPATH sur Ubuntu? Quel fichier dois-je éditer?

J'essaie de faire un go get:

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

et cela échoue avec l'erreur suivante:

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

quand je fais un go env, une liste de valeurs Go apparaît comme ci-dessous:

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"

clairement le GOPATH n'est pas défini, comment et où puis-je le configurer?

Je vois beaucoup de discussions qui mentionnent cette erreur, mais aucune qui fournit une réponse à ma question. Quel fichier doit être modifié pour fournir une valeur à ce chemin?

219
David Saintloth

Ajoutez simplement les lignes suivantes à ~/.bashrc et cela persistera. Cependant, vous pouvez utiliser d'autres chemins que vous aimez comme GOPATH au lieu de $ HOME/go dans mon exemple.

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
248
Daniel Lin

Ubuntu 14.04

export GOPATH=$HOME/go

De plus, vous pouvez ajouter cette chaîne au fichier

$HOME/.bashrc
62
pasha.zhukov

GOPATH doit être défini sur un nouveau répertoire vide. C’est l’espace de travail qui permet de télécharger des packages, et cetera. J'utilise ~/.go.

Par exemple:

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

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

56
Bryan Larsen

Si, par exemple, il s’agit d’une Ubuntu, après l’installation des paquets:

$Sudo apt install golang -y

Ajoutez simplement les lignes suivantes à ~/.bashrc (de votre utilisateur)

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

Il n'est pas nécessaire de modifier un fichier, nous pouvons simplement utiliser la commande ci-dessus pour modifier directement les variables d'environnement Go.

13
David Saintloth

Solution la plus courte et actuelle .

Écrivez ce code dans le terminal. 

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

Remarque : Ceci sera réinitialisé à chaque nouvelle fenêtre de terminal ou redémarrage du système. 

Pour être persistant, collez le code ci-dessous dans votre fichier .zshrc ou .bashrc en fonction de votre shell. Ces fichiers dans votre Home Directory . Ce sera comme ci-dessous.

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

Si vous avez configuré quelque chose nécessitant une modification des variables d'environnement, par exemple, Java, Go, etc., cela vous sera très familier.

Je supposerai que vous avez la structure de répertoires suivante quelque part comme chemin d'accès:

\---[folder name]
    +---bin
    +---pkg
    \---src
  • ouvrir un nouveau terminal
  • tapez Sudo nano /etc/environment
  • recherchez PATH=... et allez à la fin de celui-ci et ajoutez deux points : après le dernier chemin, puis collez votre go path complet, par ex. /home/user/gocode

et vous avez terminé, cela devrait le rendre persistant dans le système.

8
ymg

Vous aurez aussi besoin de GOPATH plus tard. Alors ajoutez-le à ~/.bashrc.

8
Vytautas Shaltenis

Mon environnement de go ressemblait au vôtre. 

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

Je l'ai résolu avec GOPATH sur/usr/lib/go . Essaye le.

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

le chemin d'accès peut être partout où vous voulez. Créez simplement un répertoire et définissez une variable de chemin d'accès global au nom de GOPATH dans votre environnement.

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

C'est ce qui m'a permis de travailler sur Ubuntu 15.10 en utilisant le fish Shell:

# ~/.config/fish/config.fish

set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go

Ensuite, j'ai dû modifier les autorisations sur le dossier go (il était défini sur root)

Sudo chown <name>:<name> -R /usr/share/go
4
Tom

GOPATH est une variable d'environnement associée à votre lieu de travail. GOROOT est une variable d'environnement de votre répertoire d'installation. Bien que GOROOT et GOPATH soient automatiquement définis (s'il n'y a pas de bogue) pendant l'installation, vous pouvez suivre le processus ci-dessous pour le spécifier manuellement. En outre, pour plus d'informations, vous pouvez vous référer à la page wiki de GO .

Il est préférable de définir GOPATH dans un répertoire de votre répertoire personnel, par exemple, $ HOME/go,% USERPROFILE%\go (Windows).

  1. Ceci est une solution mac, qui est testée sur macOS Sierra, ver. 10.12, ainsi que dans Gogland-EAP, qui a été introduit en tant que IDE pour la programmation Go par JetBrains.

Sur votre type de terminal 

vim ~/.profile

dans un document ouvert sur le terminal, appuyez sur i et ajoutez le chemin suivant.

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

appuyez sur ESC et tapez : x . Enfin, vous devez redémarrer (fermer et ouvrir) votre terminal ou Logout et Login. encore.

  1. Pour la configuration Windows et Linux, veuillez vous reporter à la page Go wiki à Githab sur Setting GOPATH-Golang .

CAUTION Ne configurez pas GOROOT et GOPATH dans le même répertoire, sinon vous recevrez un avertissement.

3
Esmaeil Mirzaee

Avec Go 1.8 (T2 2017), vous n’aurez plus à modifier aucun fichier si vous acceptez la valeur GOPATH par défaut (définie pour vous). 

$HOME/go

Vous pouvez voir les commentaires sur le numéro 17262 et le vote Twitter associé :

En choisissant une valeur par défaut GOPATH, nous pouvons simplifier notre documentation car nous pouvons dire des choses comme

$ go get github.com/foo/bar

vérifiera le dépôt github.com/foo/bar dans $HOME/go/src/github.com/foo/bar.

Nous n'avons pas besoin de distraire les nouveaux arrivants en leur demandant de définir une variable d'env. Tout ce que nous avons à faire est de mettre une petite note entre parenthèses au bas de la page.

$HOME/go est le chemin d'accès par défaut à votre espace de travail aller.
Si vous souhaitez modifier ce chemin, définissez la variable GOPATH sur quelque chose de votre choix.

3
VonC

Modifiez votre ~/.bash_profile pour ajouter la ligne suivante:

$ export GOPATH=$HOME/work

Enregistrez et quittez votre éditeur. Puis, sourcez votre ~/.bash_profile

$ source ~/.bash_profile

Remarque: Définissez le chemin GOBIN pour générer un fichier binaire lors de l'exécution de l'installation.

$ export GOBIN=$HOME/work/bin
1
Jackal

Go Modules

Depuis Go 1.11: Maintenant, le support des modules Go (anciennement connu sous le nom de vgo), vous n'avez donc plus besoin d'utiliser GOPATH. Cependant, il s’agit toujours d’une fonctionnalité expérimentale.

Par exemple, vous pouvez accéder à n’importe quel répertoire de votre système (en dehors de $ GOPATH), vous pouvez y initialiser un nouveau module Go et y travailler. GOPATH n'est pas nécessaire.

Vous devez juste faire cela une fois (dans un répertoire):

go mod init

Après cela, ce répertoire sera considéré comme une racine de module. Vous pouvez créer autant de modules que vous le souhaitez. GOPATH sera bientôt l'histoire.


Si vous insistez pour travailler avec GOPATH, tenez compte de ceci:

Since Go 1.8: Vous n'avez pas besoin de configurer votre GOPATH ou votre GOROOT. GOPATH se trouve par défaut sous votre répertoire utilisateur/home.

Si aucun GOPATH n'est défini, il est supposé être $ HOME/go sur les systèmes Unix et% USERPROFILE%\go sur Windows. Si vous souhaitez utiliser un emplacement personnalisé comme espace de travail, vous pouvez définir la variable d'environnement GOPATH.

Plus d'informations consultez this .

1
Inanc Gumus

Comme indiqué dans les instructions officielles :

La variable d'environnement GOPATH spécifie l'emplacement de votre espace de travail. Par défaut, un répertoire nommé va dans votre répertoire personnel, donc $ HOME/allez sous Unix, $ home/allez sur Plan 9 et% USERPROFILE%\go (généralement C:\Users\YourName\go) sous Windows. Si vous souhaitez travailler à un autre emplacement, vous devez définir GOPATH sur le chemin d'accès à ce répertoire. (Une autre configuration courante consiste à définir GOPATH = $ HOME.) Notez que GOPATH ne doit pas être le même chemin que votre installation Go.

Ainsi, par exemple, si vous codez dans Jetbrains Webstorm (à l'aide du plugin Go ), vous pouvez définir GOPATH en tant que /Users/<user>/WebstormProjects.

En termes simples, définissez-le où vous voulez que vos projets Go résident.

0
Abdul Wasae

Sur ma machine Fedora 20, j'ai ajouté les lignes suivantes à mon ~/.bashrc:

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

Vous pouvez utiliser la solution "exportation" exactement comme ce que d’autres types ont suggéré. J'aimerais vous proposer une autre solution permanente: vous pouvez utiliser n’importe quel chemin en tant que GOPATH lors de l’exécution de commandes Go.

Premièrement, vous devez télécharger un petit outil nommé gost: https://github.com/byte16/gost/releases . Si vous utilisez Ubuntu, vous pouvez télécharger la version linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_AMD64.tar.gz ).

Ensuite, vous devez exécuter les commandes ci-dessous pour le décompresser:

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

Vous obtiendrez un exécutable gost. Vous pouvez le déplacer vers /usr/local/bin pour une utilisation pratique:

$ Sudo mv gost /usr/local/bin

Exécutez la commande ci-dessous pour ajouter le chemin que vous souhaitez utiliser en tant que GOPATH dans le fichier pathspacegost. Il est nécessaire de donner au chemin un nom que vous utiliserez plus tard.

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

Exécutez n'importe quelle commande Go que vous voulez au format: 

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

Par exemple, vous voulez exécuter go get github.com/go-sql-driver/mysql avec /home/foobar/bar en tant que GOPATH, procédez comme suit:

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

Cela vous aiderait à configurer GOPATH et à exécuter la commande. Mais rappelez-vous que vous avez ajouté le chemin dans le fichier pathspace de gost. Si vous êtes sous n'importe quel niveau de sous-répertoires de /home/foobar/bar, vous pouvez même exécuter la commande ci-dessous qui ferait la même chose en un mot:

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

gost est un outil simple de Go qui peut vous aider à gérer les GOPATH et à exécuter les commandes Go. Pour plus de détails sur son utilisation pour exécuter d'autres commandes Go, vous pouvez simplement exécuter gost help goCmdName. Par exemple, vous voulez en savoir plus sur install, tapez simplement les mots ci-dessous dans:

$ gost help install

Vous pouvez également trouver plus de détails dans le README du projet: https://github.com/byte16/gost/blob/master/README.md

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

Et vous voudrez peut-être vérifier par $ Go env

0
mei

Cela a été la chose la plus agaçante à traiter. Dans l'espoir de gagner du temps.

Si go a été installé en tant qu'utilisateur root. L'utilisateur root du fichier texte bash_profile de votre système ~/.bash_profile doit attribuer $ GOROOT au répertoire d'installation go et $ GOPATH au répertoire 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]
    ...

assurez-vous que le chemin d'accès au binaire est dans votre chemin sur .bash_profile

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

Ce PATH peut être aussi long qu'une chaîne qu'il doit être .. pour ajouter de nouveaux éléments simplement séparés par deux points:

exit vi editor et enregistrement du profil bash (: wq signifie écrire et quitter) 

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

Vous devez vous déconnecter du terminal, puis vous reconnecter pour que le profil soit relancé. Vous pouvez simplement le démarrer en utilisant export.

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

Vous pouvez vérifier aller env:

...$# go env

Yay!

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

Vous pouvez maintenant télécharger et créer des répertoires dans go/src et vous pouvez vous concentrer sur ce que vous tentiez de faire.

exemple 

# Sudo go get github.com/..

Maintenant, vous allez rencontrer un autre problème ... vous n’avez peut-être pas installé git ... c’est une autre aventure .. :)

0
user3151532

Encore une autre solution: exporter chaque variable d'environnement GO* à partir 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"
0
DMaster