"Chemin d’importation non reconnu" avec go get

93

J'essaye d'installer un web.go, mais les go get github.com/hoisie/webretours en cours d'exécution

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

et cela continue pendant un certain temps avec divers paquets, avant de ne rien renvoyer d'autre. go envDonne moi:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

Comment puis-je installer web.go? Utiliser go get(plutôt que go install) est ce qui se trouve dans le README sur la page github. Ma version Go est go version go1.2 linux/amd64.

q3d
la source
3
Exporté GOROOT mais pas GOPATH? GOROOT diffère de GOBIN? Comment avez-vous installé Go? Comment avez-vous mis en place votre environnement?
Volker
J'ai installé go en suivant la page golang.org/doc/install . Je ne savais pas quoi mettre pour GOPATH.
q3d

Réponses:

101

Les problèmes concernent un invalide GOROOT.

Je pense que vous avez installé Go in /usr/local/go.
Alors changez votre GOROOTchemin à la valeur de /usr/local/go/bin.

Il semble que vous vouliez avoir votre espace de travail (GOPATH) situé à /home/me/go.

Cela pourrait résoudre votre problème.
Ajoutez ceci au bas de votre profil bash, situé ici =>$HOME/.profile

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

Assurez-vous de supprimer les anciennes références de GOROOT.

Ensuite, essayez à nouveau d'installer web.go.

Si cela ne fonctionne pas, demandez à Ubuntu d'installer Go pour vous.

sudo apt-get install golang

Tutoriel vidéo: http://www.youtube.com/watch?v=2PATwIfO5ag

Bataille de Larry
la source
15
Vous ne devriez presque jamais régler GOROOT. Votre déclaration PATH ne frappe pas / usr / local / go / bin. De plus, il convient de noter que les packages ubuntu sont un peu en retard par rapport à la version officielle, qui est la 1.2.
JimB
2
Lorsque j'ai suivi les instructions d'installation go du site officiel (installer à partir du fichier tar dans / usr / local), j'ai reçu l'erreur ci-dessus jusqu'à ce que je change le GOROOT comme ci-dessus.
Drew
1
Je viens d'installer le nouveau golang 1.3 sur fedora 20 et go getdonne la même erreur. GOROOTest réglé sur /usr, va lui-même installé dans / usr, pas / usr / local. Réglez GOPATHsur $HOME/go. Une idée de quoi vérifier d'autre?
Dfr
15
Me répondre: les désarmements GOROOTsemblent résolus le problème.
Dfr
4
+1 pour ne pas régler GOROOT. Je l'ai désarmé, je me suis assuré qu'il n'était pas réglé avec, echo $GOROOTpuis j'ai vérifié que GO l'avait toujours dans l'environnement avec go envlequel il le faisait et qu'il était /usr/local/golà où je l'ai installé (donc pas besoin de le configurer dans tous les cas)
StartupGuy
36

J'ai installé Go avec brew sur OSX 10.11 et j'ai constaté que je devais définir GOROOT:

/usr/local/Cellar/go/1.5.1/libexec

(Bien sûr, remplacez la version de ce chemin par la version go que vous avez)

Brew utilise des liens symboliques, qui trompaient le gotool. Alors suivez les liens vers la maison.

Eric
la source
Ah, enfin, j'ai trouvé quelque chose qui fonctionnait. Merci Eric!
Mir Adnan
23

J'ai eu exactement le même problème, après être passé de l'ancienne version go (installée de l'ancien PPA) aux packages par défaut plus récents (1.2.1) dans ubuntu 14.04.

La première étape consistait à purger les go existants:

sudo apt-get purge golang*

Qui génère les avertissements suivants:

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

Il semble que la suppression de go laisse certains fichiers derrière, ce qui peut perturber les nouvelles installations. Plus précisément, l'installation elle-même se terminera bien, mais ensuite toute commande go, comme "go get something" donne ces erreurs "chemin d'importation non reconnu".

Tout ce que j'avais à faire était de supprimer ces répertoires d'abord, de réinstaller Golang, et tout fonctionne comme un charme (en supposant que vous définissiez également GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
jareks
la source
J'ai aussi dû retirer/usr/local/go/
Natim
J'ai également dû supprimer / usr / bin / go.
eatonphil
6

Parce que GFW vous a interdit d'accéder à golang.org! Et quand j'utilise le proxy, cela peut bien fonctionner.

vous pouvez consulter les informations en utilisant la commande go get -v -u golang.org/x/oauth2

jefby
la source
1
C'est exactement le problème que j'ai car je suis en Chine. Après avoir défini $ http_proxy, je peux installer le package sans erreur.
ashen
1
Non seulement bloqué, mais le DNS est également pollué. Accédez d'abord à http://ping.eu/nslookup/pour trouver l'adresse IP correcte du domaine, définissez-la dans le fichier d'hôtes, puis utilisez un proxy pour télécharger. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Parfois, vous voulez juste dire le mot F au gouvernement
Mr.Wang de Next Door
4

$ unset GOROOTtravaillé pour moi. Comme la plupart des réponses suggèrent que votre GOROOT n'est pas valide.

noelmcloughlin
la source
2

J'ai eu le même problème sur MacOS 10.10. Et j'ai trouvé que le problème causé par le shell OhMyZsh. Puis je suis retourné à bash tout s'est bien passé.

Voici mon env

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/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
Igor Barinov
la source
Est-ce à go envpartir du moment où ça n'a pas fonctionné ou quand ça a fonctionné? Ce n'était probablement pas "causé par [un autre shell]", mais plutôt un échec de configuration correcte GOPATHdans cet autre shell. Les familles de shells csh et zsh n'utilisent pas les mêmes fichiers de démarrage (c'est-à-dire non ~/.profile). En particulier zshutilise $ZDOTDIR/.zshenvet $ZDOTDIR/.zprofile(où la valeur par $ZDOTDIRdéfaut est $HOME).
Dave C
1

Les causes les plus courantes sont:
1. Un GOROOT
OU mal configuré
2. GOPATH n'est pas défini

Clyde D'Cruz
la source
0

J'ai eu le même problème après avoir mis à niveau go1.2 vers go1.4.

J'ai renommé src en _src dans mon GOPATH puis j'ai fait un go get -v

Cela a fonctionné puis j'ai supprimé _src.

J'espère que ça aide.

Erol
la source
0

J'ai rencontré ce problème lors de l'installation d'un package différent, et cela pourrait être causé par la configuration GOROOT et GOPATH sur votre PATH. J'ai tendance à ne pas configurer GOROOT parce que mon installation OS X l'a géré (je crois) pour moi.

  1. Vérifiez les éléments suivants dans votre .profile (ou partout où vous stockez la configuration du profil: .bash_profile, .zshrc, .bashrc, etc.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. De plus, vous voudrez probablement aussi le faire au unset GOROOTcas où ce chemin serait également incorrect.

  3. De plus, assurez-vous de nettoyer votre PATH, de la même manière que ce que j'ai fait ci-dessous, juste avant l'affectation GOPATH, c'est-à-dire:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Ensuite, source <.profile>pour activer

  5. recommencez go get
ThatsAMorais
la source