Patrice Ferlet
Patrice Ferlet
Créateur de ce blog.
Publié le juil. 31, 2014 Temps de lecture: 3 min

Me suivre sur Mastodon

Installer localement Golang

Toujours en cours d’écriture d’un livre sur le langage Go, ou du moins sur la pratique de ce langage, je mets de temps à autres des petits articles sur mon blog pour vous donner quelques points clefs. Et aujourd’hui, je vais vous montrer comment installer “localement” le compilateur et mettre les variables d’environnement au clair.

Go (http://golang.org) est un langage, mais il vient avec sa suite d’outils et une gestion de package téléchargeables depuis le net. Les paquets (packages) s’installent dans un répertoire et sont directement importé à la demande lors de la compilation… à condition de dire au compilateur où ils se trouvent. C’est le travail de la variable d’environnement GOPATH

GOROOT quant à elle, est utilisé pour savoir où trouver les outils (gotest, govet, gofmt…) et autres joyeusetés. Depuis la version 1.1, il est nécessaire de séparer les deux répertoires, ce qui (à mon goût) n’est pas super pratique au premier abord, car malheureusement Go ne donne pas de chemin par défaut pour GOPATH qui soit viable. En d’autres termes, quand vous allez utiliser “go install XXX”, vous allez vous prendre une belle erreur qui vous dit que vous devez fournir un chemin pour les packages externes.

Pour ma part, j’ai pas mal d’autres applications non packagées que j’ai installé “localement”. Quand je parle de “local”, je parle en fait de mon répertoire utilisateur. Et comme je n’aime pas attendre 6 mois pour avoir un paquet de Go mis à jour dans les paquets de ma distributions, y’a des choses que j’installe à la mimine.

Bref, dans notre exemple, on parle de Go.

Personnellement, j’utilise une configuration d’installation qui me permet de ne pas me mélanger les paluches:

  • la distro de Go dans ~/.go
  • le reste dans ~/Projets/goprojects

Pourquoi ?

Le répertoire de distribution de Go, normalement, vous n’avez pas à y toucher. Donc on se fiche de le voir apparaître dans le “home” directement. Je rappelle que sous Linux/Unix un point devant un nom de fichier sert à cacher le fichier (ou le répertoire)

Par contre, il est conseillé de développer dans le GOPATH/src afin de ne pas se battre avec les répertoires lors des instruction d’import de vos programmes. Comme je ne code pas que en Go, j’ai un répertoire Projets dans mon home, et tout ce qui est “externes à la distributions de go” va être placée dans ce répertoire.

Voilà comment ça se passe.

wget http://golang.org/dl/go1.3.linux-amd64.tar.gz
tar xf go1.3.linux-amd64.tar.gz
mv go ~/.go

Donc, là, on vient de télécharger le paquet de Go, on a décompressé le répertoire qui a créé ~/go. Je le déplace en “~/.go” pour le cacher de ma vue.

On crée maintenant le répertoire pour installer les paquets externes et développer nos propre packages:

mkdir -p ~/Projets/goprojects

Reste plus qu’à changer les variables qui vont bien dans ~/.bashrc:

export GOROOT=~/.go
export GOPATH=~/Projets/goprojects
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

La variable PATH comprend donc le répertoire ~/.go/bin (qui contient les commandes go) et le répertoire ~/Projets/gprojects/bin où seront ajoutés les programmes externes (comme par exemple godev, gocode…).

Reste plus qu’à essayer, soit vous faites:

source ~/.bashrc

Soit vous vous reloguez, ou vous ouvrez un autre terminal. Si vous tapez:

go --version

Ca doit bien se passer…

Installez un paquet, genre gocode (dont je suis fan, je l’utilise à foison via vim):

go get -u github.com/nsf/gocode
gocode -h

Ca marche, la commande gocode est bien accessible.

Voilà, de cette manière vous avez un bon contrôle sur votre installation locale de Go, et en plus c’est facile à virer… le jour où vous voulez tout supprimer:

rm -rf ~/.go ~/Projets/goprojects

et le tour est joué.

comments powered by Disqus