web-dev-qa-db-fra.com

Erreur "commande introuvable" avec Golang

J'essaie d'exécuter golang en mode interactif. 

Je veux utiliser go-eval pour cela, j'ai suivi les instructions README:

  • J'ai exécuté go get github.com/sbinet/go-eval/ avec succès
  • J'ai couru go-eval qui a donné -bash: go-eval: command not found

Quelques informations supplémentaires:

  • echo $PATH renvoie: /usr/local/go/bin:...

  • echo $GOPATH renvoie: $HOME/golang

  • l'exécution de whereis go-eval ne renvoie aucune sortie

  • go install go-eval en cours d'exécution renvoie:

    can't load package: package go-eval: cannot find package "go-eval" in any of: /usr/local/go/src/go-eval (from $GOROOT) $HOME/golang/src/go-eval (from $GOPATH)

9
Forge

Vous devez ajouter GOPATH/bin à PATH.

PATH="$GOPATH/bin:$PATH"

Update : À partir de Go 1.8 , GOPATH utilise par défaut $HOME/go s'il n'est pas défini. Le ci-dessus ne fonctionnera pas si GOPATH n'est pas explicitement défini.

Pour définir les deux, ajoutez ceci à votre .profile:

export GOPATH="$HOME/go"
PATH="$GOPATH/bin:$PATH"
21
user1431317

Le go-eval binaire est-il dans $GOPATH/bin? Exécutez-vous la commande avec $GOPATH/bin/ comme répertoire de travail? Sinon, c'est probablement le problème. 

go get & go install installe les fichiers binaires (le cas échéant) dans $GOPATH/bin 

Vérifiez $GOPATH/bin pour le binaire go-eval. Si c'est le cas, essayez de l'exécuter à partir de $GOPATH/bin avec ./go-eval. Si cela fonctionne, vous êtes bon. 

À l'avenir, si vous souhaitez exécuter des fichiers binaires go trouvés dans $GOPATH/bin à partir de n'importe où dans votre shell, ajoutez les éléments suivants à votre profil .bashrc ou:

export PATH=$PATH:$GOPATH/bin

Puis redémarrez votre terminal ou exécutez . ~/.bashrc ou . /etc/profile

Lors de l'exécution, installez go-eval, je reçois:

impossible de charger le package: package go-eval: impossible de trouver le package "go-eval" dans l’un des éléments suivants: /usr/local/go/src/go-eval (à partir de $ GOROOT) $ HOME/golang/src/go-eval (à partir de $ GOPATH)

Vous obtenez l'erreur ci-dessus car go-eval n'est pas dans $HOME/golang/src/go-eval. Lancer go get github.com/sbinet/go-eval/ va télécharger la source sur $GOPATH/src/github/sbinet/go-eval/. Si vous souhaitez exécuter go install go-eval, vous devez spécifier le nom du package correspondant à sa position dans la hiérarchie des répertoires dans $GOPATH/src

exemple: go install github/sbinet/go-eval

4
Anfernee

J'aimerais ajouter ceci en plus des réponses données. 

Comme astuce utile, vous pouvez toujours tester vos commandes avec la commande which

Tels que: qui va

Si la commande est introuvable, vous savez que vous avez un problème PATH que vous devez résoudre en premier.

Ensuite, vous pouvez vous concentrer sur la recherche de la commande avec la commande find .

Tels que: find/-name "go" -print 2>/dev/null

La première barre oblique est le répertoire dans lequel démarrer la recherche, l'argument de -name est la commande que vous recherchez et le paramètre -print donne de bons résultats. 2>/dev/null envoie les résultats des répertoires qui ne sont pas accessibles à neverland (null) afin que vous n'ayez pas besoin de voir un tas d'erreurs.

Ce processus vous aide à trouver rapidement la commande en question. Vous pouvez ensuite l'ajouter à votre variable env. PATH. Elle devient accessible comme indiqué dans les autres réponses.

2
Jim Hendricks