ne peut pas télécharger, $ GOPATH non défini

Je veux installer json2csv en utilisant go get github.com/jehiah/json2csv mais je reçois cette erreur:

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

Une aide sur la façon de résoudre ce problème sur MacOS?

[Mise à jour: à partir de Go 1.8, GOPATH défaut $HOME/go , mais vous pouvez toujours trouver cela utile si vous souhaitez comprendre la disposition de GOPATH , la personnaliser, etc.]

Le site officiel Go discute de GOPATH et de la façon de disposer un répertoire d’espace de travail .

export GOPATH="$HOME/your-workspace-dir/" – lancez-le dans votre shell, puis ajoutez-le à ~/.bashrc ou équivalent pour qu’il soit configuré à l’avenir. Go va installer les paquets sous les sous-répertoires src/ , bin/ et pkg/ , là. Vous voudrez mettre vos propres paquets quelque part sous $GOPATH/src , comme $GOPATH/src/github.com/myusername/ si vous voulez publier sur GitHub. Vous voudrez probablement aussi export PATH=$PATH:$GOPATH/bin dans votre .bashrc afin de pouvoir exécuter des programmes compilés sous $GOPATH .

Éventuellement, via Rob Pike , vous pouvez également définir CDPATH donc cd est plus rapide à comstackr dans bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x signifie que vous pouvez simplement tapez cd net/html au lieu de cd $GOPATH/src/golang.org/x/net/html .

Keith Rarick note que vous pouvez définir GOPATH=$HOME pour placer les répertoires src/ , pkg/ et bin/ Go directement sous votre répertoire. Cela peut être intéressant (par exemple, vous pouvez déjà avoir $HOME/bin sur votre chemin), mais bien sûr, certaines personnes utilisent plusieurs espaces de travail, etc.

Celui-ci a travaillé

Configuration de l’environnement de développement Go sur Ubuntu, et comment réparer $ GOPATH / $ GOROOT

Pas

 mkdir ~/go 

Définissez $ GOPATH dans .bashrc,

 export GOPATH=~/go export PATH=$PATH:$GOPATH/bin 

En utilisant l’infusion

Je l’ai installé en utilisant l’ brew .

 $ brew install go 

Lorsque cela a été fait si vous exécutez cette commande d’infusion, les informations suivantes s’affichent:

 $ 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-comstackrs and runtime support for all supported platforms --with-cc-common Build with cross-comstackrs 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 

Les pièces importantes sont ces lignes:

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

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

Mise en place de l’environnement GO

Cela montre où GO a été installé. Nous devons faire ce qui suit pour configurer l’environnement de GO:

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

Vous pouvez alors vérifier en utilisant GO pour voir s’il est configuré correctement:

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

Mise en place de json2csv

Semble bien, donc permet d’installer json2csv :

 $ go get github.com/jehiah/json2csv $ 

Qu’est-ce qui vient de se passer? Il l’a installé. Vous pouvez vérifier comme ceci:

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

OK, alors pourquoi ne puis-je pas taper json2csv dans mon shell? C’est parce que le répertoire /bin sous $GOPATH n’est pas sur votre $PATH .

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

Alors ajoutons-le temporairement:

 $ export PATH=$GOPATH/bin:$PATH 

Et re-vérifier:

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

Maintenant c’est là:

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

Ajoutez les modifications apscopes à $PATH et $GOPATH à votre $HOME/.bash_profile pour les faire persister entre les redémarrages.

Regarder une vidéo

En général, je recommande toujours cette vidéo officielle de Go pour avoir un aperçu rapide de la question:

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

Il est plus facile d’être montré que d’être dit.

@jwfearn a paraphrasé la partie importante de la vidéo:

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

Pour MAC, cela a bien fonctionné pour moi.

 sudo nano /etc/bashrc 

et ajoutez le ci-dessous à la fin du fichier

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

Cela devrait résoudre le problème. Essayez d’ouvrir un nouveau terminal et faites écho à $ GOPATH, vous devriez voir la valeur correcte.

J’ai trouvé plus facile de le faire comme ça:

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

(pour Mac)

J’ai essayé toutes ces réponses et, pour une raison encore inconnue, aucune n’a fonctionné.

J’ai dû “forcer” le GOPATH en définissant la variable d’environnement pour chaque commande qui l’exigeait. Par exemple:

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

Même le glide me donnait l’erreur GOPATH not set . Résolu, encore une fois, par “gavage forcé”: j’ai essayé toutes ces réponses et, pour une raison encore inconnue, aucune n’a fonctionné.

J’ai dû “forcer” le GOPATH en définissant la variable d’environnement pour chaque commande qui l’exigeait.

 sudo env GOPATH=$HOME/goWorkDirectory glide install 

J’espère que cela aide quelqu’un.

Il suffit d’ export GOPATH="/whatever/you/like/your/GOPATH/to/be" .

Votre $GOROOT ne doit pas être configuré. Vous $GOPATH devrait être mis à $HOME/go en tapant export $GOPATH=$HOME/go

Veuillez taper export GOROOT="" pour résoudre votre problème.

Si vous rencontrez ce problème après avoir $GOPATH , c’est peut-être parce que vous l’exécutez avec un shell non pris en charge. J’utilisais du fish et ça ne marchait pas, le lancer avec bash marchait bien.

Vous pouvez utiliser la solution “export” comme le suggèrent les autres. Je voudrais vous proposer une autre solution pour une commodité permanente: vous pouvez utiliser n’importe quel chemin en tant que GOPATH lors de l’exécution des commandes Go.

Tout d’abord, 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 gost exécutable. Vous pouvez le déplacer dans /usr/local/bin pour une utilisation pratique:

 $ sudo mv gost /usr/local/bin 

Exécutez la commande ci-dessous pour append le chemin que vous souhaitez utiliser en tant que GOPATH dans le pathspace gost maintient. Il est nécessaire de donner au chemin un nom que vous utiliseriez 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 dans le format:

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

Par exemple, vous voulez go get github.com/go-sql-driver/mysql avec /home/foobar/bar comme GOPATH, faites-le comme ci-dessous:

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

Cela vous aiderait à définir le GOPATH et à exécuter la commande. Mais rappelez-vous que vous avez ajouté le chemin dans l’ gost de gost de gost . Si vous êtes à un niveau quelconque 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 bref:

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

gost est un outil simple de Go qui peut vous aider à gérer GOPATH et exécuter les commandes Go. Pour plus d’informations sur son utilisation pour exécuter d’autres commandes Go, vous pouvez simplement lancer gost help goCmdName . Par exemple, vous voulez en savoir plus sur l’ install , tapez simplement des 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

Lancez ‘go env’ et voyez où votre GOPATH pointe actuellement. Si vous changez de répertoire, la commande “go get..etc” devrait fonctionner.

Ce problème m’est apparu dans pi framboise. Je me suis connecté via le client VNC Le problème a persisté malgré la configuration et l’exportation de GOPATH. Ensuite, la commande “go get” sans sudo a fonctionné parfaitement.

J’ai dû exécuter une application en tant que root (pour ouvrir un serveur Web sur le port 80), cela a généré une erreur car l’utilisateur de sudo a un environnement différent de celui de l’utilisateur normal, GOPATH n’était donc pas défini.

Si quelqu’un d’autre a ce problème, ajoutez -E à la commande, cela préservera l’environnement utilisateur.

sudo -E go run main.go

Pour plus d’infos voir la discussion ici: Google Groupes – Problème GOPATH