web-dev-qa-db-fra.com

quelles devraient être les valeurs de GOPATH et GOROOT?

J'essaie d'installer Doozer comme ça

$ goinstall github.com/ha/doozer

Je reçois ces erreurs. 

goinstall: os: go/build: package could not be found locally
goinstall: fmt: go/build: package could not be found locally
goinstall: io: go/build: package could not be found locally
goinstall: reflect: go/build: package could not be found locally
goinstall: math: go/build: package could not be found locally
goinstall: Rand: go/build: package could not be found locally
goinstall: url: go/build: package could not be found locally
goinstall: net: go/build: package could not be found locally
goinstall: sync: go/build: package could not be found locally
goinstall: runtime: go/build: package could not be found locally
goinstall: strings: go/build: package could not be found locally
goinstall: sort: go/build: package could not be found locally
goinstall: strconv: go/build: package could not be found locally
goinstall: bytes: go/build: package could not be found locally
goinstall: log: go/build: package could not be found locally
goinstall: encoding/binary: go/build: package could not be found locally
239
jshen

GOPATH est discuté dans la documentation cmd/go

La variable d'environnement GOPATH répertorie les emplacements dans lesquels rechercher le code Go. Sur Unix, la valeur est une chaîne séparée par deux points. Sous Windows, la valeur est une chaîne séparée par des points-virgules. Sur le plan 9, la valeur est une liste.

GOPATH doit être défini pour obtenir, compiler et installer des packages en dehors du fichier Go standard arbre.

GOROOT est décrit dans les instructions d’installation :

Les distributions binaires Go supposent qu’elles seront installées dans /usr/local/go (ou c:\Go sous Windows), mais il est possible d'installer les outils Go à un autre endroit. Dans ce cas, vous devez définir le paramètre GOROOT variable d'environnement pour pointer vers le répertoire dans lequel elle se trouvait installée.

Par exemple, si vous avez installé Go dans votre répertoire personnel, vous devez ajouter les commandes suivantes à $HOME/.profile:

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

Remarque:GOROOT doit être défini uniquement lors de l'installation dans un emplacement personnalisé.

(version mise à jour de réponse de Chris Bunch .)

222
pje

Voici une configuration simple:

directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software      : ~/programming/go/packages

GOROOT, GOPATH, PATH sont définis comme suit:

export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Donc, en bref:

GOROOT est destiné aux compilateurs/outils issus de l'installation go.
GOPATH est destiné à vos propres projets/bibliothèques tierces (téléchargé avec "go get").

82
EvgenijM86

GOPATH est discuté ici :

La variable d'environnement GOPATH

GOPATH peut être défini sur une liste de chemins séparés par deux-points dans lesquels Go le code, les objets de package et les exécutables peuvent être trouvés.

Configurez GOPATH pour utiliser goinstall afin de générer et d’installer votre propre code et bibliothèques externes en dehors de l’arbre Go (et pour éviter d’écrire Makefiles).

Et GOROOT est discuté ici :

$GOROOT La racine de l'arborescence Go, souvent $HOME/go. La valeur par défaut est le parent du répertoire où all.bash est exécuté. Si vous choisissez de ne pas le faire set $GOROOT, vous devez exécuter gomake au lieu de make ou gmake quand développer des programmes Go en utilisant les makefiles classiques.

36
Chris Bunch

Première exécution go env.
Si vous voyez que l'installation est installée, vous pouvez l'installer via homebrew ou via un package et/ou par un autre moyen.
Si vous voyez la sortie alors votre go est installé.
Il vous montre tous les envs qui sont définis et qui ne le sont pas.

Si vous voyez vide pour GOROOT:

  1. exécuter which go (sur mon ordinateur: /usr/local/go/bin/go)
  2. puis exportez comme ceci export GOROOT=/usr/local/go

Si vous voyez vide pour GOPATH:

  1. Créez n'importe quel répertoire sur votre ordinateur pour les projets en cours dans mon cas: ~/GO_PROJECTS
  2. alors export GOPATH=~/GO_PROJECTS
30
РАВИ

J'ai lu les docs go help gopath et j'étais toujours incroyablement confus, mais j'ai trouvé ce petit nugget d'une autre page doc:

La variable d'environnement GOPATH spécifie l'emplacement de votre espace de travail. Il s'agit probablement de la seule variable d'environnement à définir lors du développement du code Go.

http://golang.org/doc/code.html#GOPATH

14
Max

GOPATH devrait pas pointer sur l'installation Go, mais plutôt sur votre espace de travail (voir https://golang.org/doc/code.html#GOPATH ). Chaque fois que vous installez un paquet avec go get ou go install, il se posera dans GOPATH. C’est pourquoi il vous avertit que vous voulez absolument que {not} _ veuille que des paquets aléatoires provenant d’Internet soient déversés dans votre installation officielle.

10
arganzheng

À partir de go 1.8 (T2 2017), GOPATH sera défini pour vous par défaut sur $ HOME/go

Voir numéro 17262 et le commentaire de Rob Pike:

$HOME/go ce sera.
Il n’existe pas de meilleure réponse, mais celle-ci est simple et succincte. Le choix de ce nom ne peut poser de problème que si $HOME/go existe déjà, ce qui ne fera que plaire aux experts déjà installés et comprenant GOPATH.

8
VonC

Comme mentionné ci-dessus:

La variable d'environnement GOPATH spécifie l'emplacement de votre fichier espace de travail.

Pour Windows , cela a fonctionné pour moi (dans la fenêtre Ms-dos):

set GOPATH=D:\my_folder_for_go_code\

Cela crée une variable GOPATH que Ms-dos reconnaît lorsqu'elle est utilisée comme suit:

cd %GOPATH%
7
tucson

En ce qui concerne plus particulièrement GOROOT, Go 1.9 le définira automatiquement sur son chemin d’installation.
Même si vous avez plusieurs Go installés, appeler le 1.9.x mettra GOROOT à /path/to/go/1.9 (avant, si non défini, il supposait un chemin par défaut comme /usr/local/go ou c:\Go).

Voir CL Go Review 53370 :

Le go tool utilisera maintenant le chemin à partir duquel il a été appelé pour tenter de localiser la racine de l'arborescence d'installation Go.
Cela signifie que si l'ensemble de l'installation de Go est déplacé vers un nouvel emplacement, le go tool devrait continuer à fonctionner comme d'habitude.

Cela peut être annulé en définissant GOROOT dans l'environnement, ce qui ne devrait être fait que dans des circonstances inhabituelles.
Notez que cela n’affecte pas le résultat de la fonction runtime.GOROOT() , qui continuera à signaler l’emplacement d’installation d’origine; cela peut être corrigé dans les versions ultérieures.

2
VonC

sous osx, j’ai installé avec brassage, voici le réglage qui me convient

GOPATH="$HOME/my_go_work_space" //make sure you have this folder created

GOROOT="/usr/local/Cellar/go/1.10/libexec"
0
Edwin Ikechukwu

Il existe également un cas où, lorsque nous utilisons go, il compile tous les fichiers go.

Alors disons que nous avions un fichier main.go et plus tard, nous avons changé le fichier actuel en main_old.go puis nous avons ajouté notre nouveau fichier main.go . Ensuite, lorsque nous construirons notre application, tous les fichiers aller seront compilés. Donc, l'erreur qui se produit peut être due à une erreur de compilation dans certains autres fichiers Go.

0
Jino Jossy

Je devais annexer

export GOROOT=/usr/local/Cellar/go/1.10.1/libexec

sur mon ~/.bash_profile sur Mac OS X

0
Shammi Shailaj

Une fois que Go lang est installé, GOROOT est le répertoire racine de l’installation.

Quand j'ai explosé le binaire Go Lang dans le répertoire Windows C: \, mon GOROOT devrait être C:\go. S'il est installé avec le programme d'installation de Windows, il peut s'agir de C:\Program Files\go (ou de C:\Program Files (x86)\go, pour les packages 64 bits).

 GOROOT = C:\go

tandis que mon GOPATH est l'emplacement du code source ou de l'espace de travail de Go lang.

Si le code source de mon langage Go se trouve dans C:\Users \\ GO_Workspace, votre compte GOPATH serait comme ci-dessous:

 GOPATH = C:\Users\<xyz>\GO_Workspace
0
Anamika Patel