164 votes

L'installation de Go échoue avec l'erreur suivante : pas d'emplacement d'installation pour le répertoire xxx en dehors du GOPATH.

~/src/go-statsd-client> echo $GOPATH
/Users/me/gopath
~/src/go-statsd-client> echo $GOROOT
/usr/local/Cellar/go/1.1.1\
~/src/go-statsd-client> go install
go install: no install location for directory /Users/me/src/go-statsd-client outside GOPATH

Quelle que soit la structure du projet, cela échoue toujours avec le même message. Go build fonctionne parfaitement.

Voici mon go env

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/gopath"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.1.1"
GOTOOLDIR="/usr/local/Cellar/go/1.1.1/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
CGO_ENABLED="1"

C'est sur Mac OSX Mountain Lion et le go a été installé avec homebrew.

3voto

kivetros Points 484

J'ai eu ce problème sous Windows.

Mon problème était que mon %GOPATH% a été définie comme suit

C:\Users\john\src\goworkspace

au lieu de

C:\Users\john\src\goworkspace\

L'ajout de la barre oblique manquante à la fin a réglé le problème pour moi.

3voto

JRun Points 552

Pour ce que ça vaut, voici mon .bash_profile, qui fonctionne bien pour moi sur un mac avec Atom, après avoir installé Go avec Homebrew :

export GOROOT=`go env GOROOT`
export GOPATH=/Users/yy/Projects/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

2voto

kuchumovn Points 191

Dans mon cas (OS X), c'est parce que j'ai configuré GOPATH a /home/username/go (comme dans le livre) au lieu de /Users/username/go

2voto

yu yang Jian Points 2161

Je suis sous Windows, et je l'ai obtenu en donnant la commande go help gopath à cmd, et lisez le texte en gras dans l'instruction,

c'est à dire si le code que vous voulez installer est à ..BaseDir...\SomeProject\src\basic\set le GOPATH ne doit pas être le même emplacement que le code, il doit être juste le DIR du projet de base : ..BaseDir...\SomeProject .

La variable d'environnement GOPATH liste les endroits où chercher le code Go. Sur Unix, la valeur est une chaîne de caractères séparée par deux points. Sous Windows, la valeur est une chaîne de caractères séparée par des points-virgules. Sous Plan 9, la valeur est une liste.

Si la variable d'environnement n'est pas définie, le GOPATH utilise par défaut un fichier un sous-répertoire nommé "go" dans le répertoire personnel de l'utilisateur ($HOME/go sous sous Unix, %USERPROFILE%, etc. \go sous Windows), sauf si ce répertoire contient un Go dans ce répertoire. Exécutez "go env GOPATH" pour voir le GOPATH actuel.

Ver https://golang.org/wiki/SettingGOPATH pour définir un GOPATH personnalisé.

Chaque répertoire listé dans GOPATH doit avoir une structure prescrite :

Le répertoire src contient le code source. Le chemin sous src détermine le d'importation ou le nom de l'exécutable.

Le répertoire pkg contient les objets de paquetage installés. Comme dans l'arbre de Go, chaque paire de système d'exploitation et d'architecture cible possède son propre sous-répertoire de pkg (pkg/GOOS_GOARCH).

Si DIR est un répertoire figurant dans le GOPATH, un paquet dont les sources se trouvent dans le répertoire DIR/src/foo/bar peut être importé sous le nom de " foo/bar " et sa forme compilée sera installée dans "DIR/pkg/GOOS_GOARCH/foo/bar.a".

Le répertoire bin contient les commandes compilées. Chaque commande porte le nom de son répertoire source, mais seulement le dernier élément, pas le chemin entier. C'est-à-dire que la commande dont la source se trouve dans DIR/src/foo/quux est installée dans DIR/bin/quux, et non DIR/bin/foo/quux. Le préfixe "foo/" est supprimé de sorte que afin que vous puissiez ajouter DIR/bin à votre PATH pour accéder aux commandes installées. Si la variable d'environnement GOBIN est définie, les commandes sont sont installées dans le répertoire qu'elle nomme au lieu de DIR/bin. GOBIN doit être un chemin absolu.

Voici un exemple de présentation de répertoire :

GOPATH=/home/user/go

/home/user/go/
    src/
        foo/
            bar/               (go code in package bar)
                x.go
            quux/              (go code in package main)
                y.go
    bin/
        quux                   (installed command)
    pkg/
        linux_amd64/
            foo/
                bar.a          (installed package object)

..........

si le GOPATH a été réglé sur le DIR du projet de base et que le problème persiste, sous Windows, vous pouvez essayer de régler les paramètres suivants GOBIN comme Base Project DIR\bin o %GOPATH%\bin .

1voto

Omer Levi Hevroni Points 639

Attention à la course

export GOPATH=$HOME

Partez du principe que votre code existe dans des endroits spécifiques liés à GOPATH . Donc, à la place, vous pouvez utiliser docker pour exécuter n'importe quelle commande go :

docker run -it -v $(pwd):/go/src/github.com/<organization name>/<repository name> golang

Et maintenant vous pouvez utiliser n'importe quelle commande golang, par exemple :

go test github.com/<organization name>/<repository name>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X