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.

210voto

Benjamin Wootton Points 2117

Pour tous les utilisateurs d'OS X et les futurs moi, vous devez également définir GOBIN pour éviter ce message confus à l'installation et go get

mkdir bin 
export GOBIN=$GOPATH/bin

119voto

Gustavo Niemeyer Points 4759

Lorsque vous ne fournissez aucun argument à go install il tente par défaut d'installer le paquet dans le répertoire courant. Le message d'erreur vous indique qu'il ne peut pas le faire, parce que le répertoire courant ne fait pas partie de votre fichier $GOPATH .

Vous pouvez soit :

  • Définir $GOPATH dans votre $HOME ( export GOPATH=$HOME ).
  • Déplacez votre source à l'intérieur de la zone actuelle $GOPATH ( mv ~/src/go-statsd-client /User/me/gopath ).

Après l'un ou l'autre, aller dans le go-statsd-client et en tapant go install fonctionnera, tout comme la saisie de go install go-statsd-client à partir de n'importe quel endroit du système de fichiers. Les binaires construits seront placés dans $GOPATH/bin .

À titre de suggestion sans rapport avec le sujet, vous voudrez probablement nommer votre paquet avec un nom de domaine, afin d'éviter les conflits de noms (par ex. github.com/you/go-statsd-client si c'est là que se trouve votre code source).

30voto

Andrea Di Persio Points 1226

Vous utilisez allez installer sur un répertoire en dehors du dossier GOPATH. Définissez votre variable env. GOBIN, ou déplacez src dans le GOPATH.

GOPATH/
     bin/
     src/
       go-statsd-client/

Plus d'informations : GO BUILD Code source , ligne 296

27voto

Zhenhua Points 1659

Vous devez configurer les deux GOPATH y GOBIN . Assurez-vous que vous avez fait ce qui suit (veuillez remplacer ~/go avec votre préférence GOPATH et changer ensuite GOBIN ). Ceci est testé sur Ubuntu 16.04 LTS .

export GOPATH=~/go 

mkdir ~/go/bin

export GOBIN=$GOPATH/bin

La réponse choisie n'a pas résolu le problème pour moi.

7voto

Earl Points 838

Vous devez avoir 3 répertoires dans le répertoire GOPATH que vous avez choisi.

GOPATH
     /bin
     /src
       /someProgram
        program.go
       /someLibrary
        library.go
     /pkg

Alors, tu vas courir go install à l'intérieur de someProgram (qui place un exécutable dans bin) ou de someLibrary (qui place une bibliothèque dans pkg).

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