J'essaie de faire un go get
:
go get github.com/go-sql-driver/mysql
et cela échoue avec l'erreur suivante:
package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
quand je fais un go env
, une liste de valeurs Go apparaît comme ci-dessous:
ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="AMD64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_AMD64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
clairement le GOPATH n'est pas défini, comment et où puis-je le configurer?
Je vois beaucoup de discussions qui mentionnent cette erreur, mais aucune qui fournit une réponse à ma question. Quel fichier doit être modifié pour fournir une valeur à ce chemin?
Ajoutez simplement les lignes suivantes à ~/.bashrc et cela persistera. Cependant, vous pouvez utiliser d'autres chemins que vous aimez comme GOPATH au lieu de $ HOME/go dans mon exemple.
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ubuntu 14.04
export GOPATH=$HOME/go
De plus, vous pouvez ajouter cette chaîne au fichier
$HOME/.bashrc
GOPATH doit être défini sur un nouveau répertoire vide. C’est l’espace de travail qui permet de télécharger des packages, et cetera. J'utilise ~/.go.
Par exemple:
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc
source: http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/
Si, par exemple, il s’agit d’une Ubuntu, après l’installation des paquets:
$Sudo apt install golang -y
Ajoutez simplement les lignes suivantes à ~/.bashrc (de votre utilisateur)
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPATH=/path/desired/here
Il n'est pas nécessaire de modifier un fichier, nous pouvons simplement utiliser la commande ci-dessus pour modifier directement les variables d'environnement Go.
Solution la plus courte et actuelle .
Écrivez ce code dans le terminal.
export GOPATH=path/to/your/gopath/directory
Remarque : Ceci sera réinitialisé à chaque nouvelle fenêtre de terminal ou redémarrage du système.
Pour être persistant, collez le code ci-dessous dans votre fichier .zshrc
ou .bashrc
en fonction de votre shell. Ces fichiers dans votre Home Directory . Ce sera comme ci-dessous.
export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin
Si vous avez configuré quelque chose nécessitant une modification des variables d'environnement, par exemple, Java, Go, etc., cela vous sera très familier.
Je supposerai que vous avez la structure de répertoires suivante quelque part comme chemin d'accès:
\---[folder name]
+---bin
+---pkg
\---src
Sudo nano /etc/environment
PATH=...
et allez à la fin de celui-ci et ajoutez deux points :
après le dernier chemin, puis collez votre go path
complet, par ex. /home/user/gocode
et vous avez terminé, cela devrait le rendre persistant dans le système.
Vous aurez aussi besoin de GOPATH plus tard. Alors ajoutez-le à ~/.bashrc
.
Mon environnement de go ressemblait au vôtre.
$go env
GOARCH="AMD64"
GOBIN=""
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go-1.6"
GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_AMD64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
Je l'ai résolu avec GOPATH sur/usr/lib/go . Essaye le.
export GOPATH=/usr/lib/go
export PATH=$PATH:$GOPATH/bin
le chemin d'accès peut être partout où vous voulez. Créez simplement un répertoire et définissez une variable de chemin d'accès global au nom de GOPATH dans votre environnement.
mkdir ~/go
export GOPATH=~/go
go get github.com/go-sql-driver/mysql
C'est ce qui m'a permis de travailler sur Ubuntu 15.10 en utilisant le fish Shell
:
# ~/.config/fish/config.fish
set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go
Ensuite, j'ai dû modifier les autorisations sur le dossier go
(il était défini sur root)
Sudo chown <name>:<name> -R /usr/share/go
GOPATH est une variable d'environnement associée à votre lieu de travail. GOROOT est une variable d'environnement de votre répertoire d'installation. Bien que GOROOT et GOPATH soient automatiquement définis (s'il n'y a pas de bogue) pendant l'installation, vous pouvez suivre le processus ci-dessous pour le spécifier manuellement. En outre, pour plus d'informations, vous pouvez vous référer à la page wiki de GO .
Il est préférable de définir GOPATH dans un répertoire de votre répertoire personnel, par exemple, $ HOME/go,% USERPROFILE%\go (Windows).
Sur votre type de terminal
vim ~/.profile
dans un document ouvert sur le terminal, appuyez sur i et ajoutez le chemin suivant.
GOPATH=/path/to/a/directory/inside/home/directory
GOROOT=/path/to/you/go/library
PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin
appuyez sur ESC et tapez : x . Enfin, vous devez redémarrer (fermer et ouvrir) votre terminal ou Logout et Login. encore.
CAUTION Ne configurez pas GOROOT et GOPATH dans le même répertoire, sinon vous recevrez un avertissement.
Avec Go 1.8 (T2 2017), vous n’aurez plus à modifier aucun fichier si vous acceptez la valeur GOPATH
par défaut (définie pour vous).
$HOME/go
Vous pouvez voir les commentaires sur le numéro 17262 et le vote Twitter associé :
En choisissant une valeur par défaut
GOPATH
, nous pouvons simplifier notre documentation car nous pouvons dire des choses comme
$ go get github.com/foo/bar
vérifiera le dépôt
github.com/foo/bar
dans$HOME/go/src/github.com/foo/bar
.Nous n'avons pas besoin de distraire les nouveaux arrivants en leur demandant de définir une variable d'env. Tout ce que nous avons à faire est de mettre une petite note entre parenthèses au bas de la page.
$HOME/go
est le chemin d'accès par défaut à votre espace de travail aller.
Si vous souhaitez modifier ce chemin, définissez la variableGOPATH
sur quelque chose de votre choix.
Modifiez votre ~/.bash_profile
pour ajouter la ligne suivante:
$ export GOPATH=$HOME/work
Enregistrez et quittez votre éditeur. Puis, sourcez votre ~/.bash_profile
$ source ~/.bash_profile
Remarque: Définissez le chemin GOBIN pour générer un fichier binaire lors de l'exécution de l'installation.
$ export GOBIN=$HOME/work/bin
Go Modules
Depuis Go 1.11: Maintenant, le support des modules Go (anciennement connu sous le nom de vgo), vous n'avez donc plus besoin d'utiliser GOPATH. Cependant, il s’agit toujours d’une fonctionnalité expérimentale.
Par exemple, vous pouvez accéder à n’importe quel répertoire de votre système (en dehors de $ GOPATH), vous pouvez y initialiser un nouveau module Go et y travailler. GOPATH n'est pas nécessaire.
Vous devez juste faire cela une fois (dans un répertoire):
go mod init
Après cela, ce répertoire sera considéré comme une racine de module. Vous pouvez créer autant de modules que vous le souhaitez. GOPATH sera bientôt l'histoire.
Si vous insistez pour travailler avec GOPATH, tenez compte de ceci:
Since Go 1.8: Vous n'avez pas besoin de configurer votre GOPATH ou votre GOROOT. GOPATH se trouve par défaut sous votre répertoire utilisateur/home.
Si aucun GOPATH n'est défini, il est supposé être $ HOME/go sur les systèmes Unix et% USERPROFILE%\go sur Windows. Si vous souhaitez utiliser un emplacement personnalisé comme espace de travail, vous pouvez définir la variable d'environnement GOPATH.
Plus d'informations consultez this .
Comme indiqué dans les instructions officielles :
La variable d'environnement GOPATH spécifie l'emplacement de votre espace de travail. Par défaut, un répertoire nommé va dans votre répertoire personnel, donc $ HOME/allez sous Unix, $ home/allez sur Plan 9 et% USERPROFILE%\go (généralement C:\Users\YourName\go) sous Windows. Si vous souhaitez travailler à un autre emplacement, vous devez définir GOPATH sur le chemin d'accès à ce répertoire. (Une autre configuration courante consiste à définir GOPATH = $ HOME.) Notez que GOPATH ne doit pas être le même chemin que votre installation Go.
Ainsi, par exemple, si vous codez dans Jetbrains Webstorm (à l'aide du plugin Go ), vous pouvez définir GOPATH
en tant que /Users/<user>/WebstormProjects
.
En termes simples, définissez-le où vous voulez que vos projets Go résident.
Sur ma machine Fedora 20, j'ai ajouté les lignes suivantes à mon ~/.bashrc:
export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Vous pouvez utiliser la solution "exportation" exactement comme ce que d’autres types ont suggéré. J'aimerais vous proposer une autre solution permanente: vous pouvez utiliser n’importe quel chemin en tant que GOPATH lors de l’exécution de commandes Go.
Premièrement, vous devez télécharger un petit outil nommé gost
: https://github.com/byte16/gost/releases . Si vous utilisez Ubuntu, vous pouvez télécharger la version linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_AMD64.tar.gz ).
Ensuite, vous devez exécuter les commandes ci-dessous pour le décompresser:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_AMD64.tar.gz
Vous obtiendrez un exécutable gost
. Vous pouvez le déplacer vers /usr/local/bin
pour une utilisation pratique:
$ Sudo mv gost /usr/local/bin
Exécutez la commande ci-dessous pour ajouter le chemin que vous souhaitez utiliser en tant que GOPATH dans le fichier pathspacegost
. Il est nécessaire de donner au chemin un nom que vous utiliserez plus tard.
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
Exécutez n'importe quelle commande Go que vous voulez au format:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
Par exemple, vous voulez exécuter go get github.com/go-sql-driver/mysql
avec /home/foobar/bar
en tant que GOPATH, procédez comme suit:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
Cela vous aiderait à configurer GOPATH et à exécuter la commande. Mais rappelez-vous que vous avez ajouté le chemin dans le fichier pathspace de gost
. Si vous êtes sous n'importe quel niveau de sous-répertoires de /home/foobar/bar
, vous pouvez même exécuter la commande ci-dessous qui ferait la même chose en un mot:
$ gost get -- github.com/go-sql-driver/mysql
gost
est un outil simple de Go qui peut vous aider à gérer les GOPATH et à exécuter les commandes Go. Pour plus de détails sur son utilisation pour exécuter d'autres commandes Go, vous pouvez simplement exécuter gost help goCmdName
. Par exemple, vous voulez en savoir plus sur install
, tapez simplement les mots ci-dessous dans:
$ gost help install
Vous pouvez également trouver plus de détails dans le README du projet: https://github.com/byte16/gost/blob/master/README.md
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
Et vous voudrez peut-être vérifier par $ Go env
Cela a été la chose la plus agaçante à traiter. Dans l'espoir de gagner du temps.
Si go a été installé en tant qu'utilisateur root. L'utilisateur root du fichier texte bash_profile de votre système ~/.bash_profile doit attribuer $ GOROOT au répertoire d'installation go et $ GOPATH au répertoire go/src.
...$# Sudo su
...$# vi ~/.bash_profile
***Story continues in vi editor***
GOROOT=$GOROOT:/usr/local/go
GOPATH=$GOPATH:/usr/local/go/src
...
[your regular PATH stuff here]
...
assurez-vous que le chemin d'accès au binaire est dans votre chemin sur .bash_profile
PATH = $ PATH: $ HOME/bin:/usr/local/bin:/usr/local/go/bin
Ce PATH peut être aussi long qu'une chaîne qu'il doit être .. pour ajouter de nouveaux éléments simplement séparés par deux points:
exit vi editor et enregistrement du profil bash (: wq signifie écrire et quitter)
[esc]
[shift] + [:]
:wq
Vous devez vous déconnecter du terminal, puis vous reconnecter pour que le profil soit relancé. Vous pouvez simplement le démarrer en utilisant export.
...$# export GOPATH=/usr/local/go/src
Vous pouvez vérifier aller env:
...$# go env
Yay!
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"
Vous pouvez maintenant télécharger et créer des répertoires dans go/src et vous pouvez vous concentrer sur ce que vous tentiez de faire.
exemple
# Sudo go get github.com/..
Maintenant, vous allez rencontrer un autre problème ... vous n’avez peut-être pas installé git ... c’est une autre aventure .. :)
Encore une autre solution: exporter chaque variable d'environnement GO*
à partir de go env
.bashrc:
eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do
echo "export $setenv; "
done 2> /dev/null)
[[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin"
[[ -n $GOROOT ]] || export GOROOT=/usr/bin/go
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"