GOPATH sur Ubuntu : comment ne pas vous casser la tête (et le code)
Vous avez sûrement déjà vécu ça : vous venez d'installer Go sur Ubuntu, vous ouvrez un terminal, vous tapez go run main.go, et en retour – le silence. Ou pire encore – une mer rouge d'erreurs mentionnant GOPATH. Si vous avez cherché ce problème sur Google, vous avez presque certainement vu cette fameuse question sur Stack Overflow avec des milliers de vues : "How do I SET the GOPATH environment variable on Ubuntu? What file must I edit?". Une douleur familière ? Bienvenue au club.
Moi-même, j'ai perdu une demi-journée à essayer de comprendre pourquoi Go ne voyait pas mes paquets, alors que j'avais « tout fait correctement ». Spoiler : je l'avais mal fait. Dans cet article, nous allons passer en revue les principales erreurs lors de la configuration de GOPATH sur Ubuntu, apprendre à les éviter et, enfin, configurer l'environnement pour qu'il fonctionne comme une horloge suisse.
Qu'est-ce que GOPATH et pourquoi est-il encore important ?
Avant de plonger dans les détails, rappelons ce qu'est GOPATH. Dans le monde de Go (surtout dans les versions antérieures à 1.16), c'était la vache sacrée. GOPATH est le chemin vers le répertoire de travail de Go, où sont stockés vos sources, vos binaires compilés et les paquets tiers. Par défaut sur Ubuntu, il est défini sur $HOME/go, mais de nombreux développeurs (surtout ceux qui travaillent avec plusieurs projets) le modifient.
Avec l'arrivée des Go Modules (à partir de Go 1.11), le besoin de gérer manuellement GOPATH a diminué, mais il n'a pas complètement disparu. Si vous travaillez avec d'anciens projets, utilisez go get ou voulez simplement que go install place les binaires dans un endroit pratique – vous devrez quand même vous familiariser avec cette variable.
Top 5 des erreurs lors de la configuration de GOPATH sur Ubuntu
J'ai rassemblé les pièges les plus courants dans lesquels tombent les débutants (et pas seulement). Vérifiez si vous n'êtes pas actuellement sur l'un de ces obstacles.
Erreur n°1 : Modifier le mauvais fichier
La question la plus populaire sur Stack Overflow. Les utilisateurs modifient /etc/environment, /etc/profile ou même /etc/bash.bashrc. Oui, cela fonctionne, mais c'est une mauvaise pratique. Les fichiers système sont destinés aux paramètres système. Votre GOPATH est une variable personnelle, et sa place est dans les fichiers de configuration de l'utilisateur.
Comment faire correctement : modifiez ~/.bashrc (pour Bash) ou ~/.profile (si vous utilisez un shell de connexion). Si vous êtes sur Zsh – c'est ~/.zshrc.
Erreur n°2 : Oublier l'export
Je vois souvent dans les configurations : GOPATH=$HOME/go sans export. Sans export, la variable ne sera pas transmise aux processus enfants (y compris votre IDE et go build).
Syntaxe correcte :
export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/binErreur n°3 : Ne pas redémarrer le terminal
Vous avez modifié .bashrc, sauvegardé, puis vous restez assis à regarder un echo $GOPATH vide. La magie n'opérera pas tant que vous n'aurez pas appliqué les modifications. La commande source ~/.bashrc est votre meilleure amie.
Erreur n°4 : Conflit avec Go Modules
Si vous utilisez go mod init pour chaque projet, GOPATH peut interférer. Surtout si vous essayez de travailler à l'intérieur de $GOPATH/src. Le Go moderne ne l'exige pas, mais si vous persistez à placer votre projet dans ~/go/src/myproject, préparez-vous à des erreurs inattendues.
Erreur n°5 : Espaces et caractères spéciaux dans le chemin
Ubuntu permet de créer des dossiers avec des espaces. Ne faites pas cela pour Go. /home/user/My Projects/go est un casse-tête. Utilisez /home/user/projects/go ou simplement $HOME/go.
Guide étape par étape : comment configurer correctement GOPATH
Faisons-le une fois pour toutes. Ouvrez un terminal et exécutez les commandes dans l'ordre.
Étape 1. Vérifiez la version actuelle de Go
go versionBlogs
Book Recommendations
Lire aussi
Bot Telegram en Go : de l'idée au déploiement en 30 minutes
Monorepo avec Go : organisation du code en pratique
Réusinage de code PHP : quand est-il nécessaire et comment le faire
5 erreurs fatales des débutants en JavaScript (et comment les éviter)
Mise en cache en TypeScript : Redis, Memcached et solutions intégrées — guide complet