Installer localement Golang

31/07/2014

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é.

Ça peut vous intéresser aussi


Mise à jour du blog en Go

Si vous connaissiez mon blog, vous avez remarqué qu’à ...


Poste de développement PHP sous Fedora

Linux est un système parfait pour développer. Simple d’installation,...


Créer une API en GO avec Gorilla

Bon, on va parler Go ou Golang (faudra me dire ...


Optimisons un peu notre Linux en limitant les accès disques

Que vous ayez un SSD ou non, je pense que ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.