Supprimer un package installé avec go get : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

« J'ai installé un package, mais je n'arrive pas à le supprimer ! » — une histoire qui vous parle ?

\n\n

Vous commencez tout juste à apprendre Go, vous trouvez une bibliothèque géniale sur GitHub, vous tapez go get github.com/example/package — et tout fonctionne ! Mais le temps passe, votre projet évolue, et vous réalisez : ce package n'est plus nécessaire. Vous cherchez la commande go remove ou go uninstall, mais... elle n'existe tout simplement pas.

\n\n

Bienvenue dans l'univers de Go, où la suppression de packages n'est pas un simple bouton, mais une petite aventure. Dans cet article, nous allons voir où les packages atterrissent après un go get, comment les « déloger » correctement et pourquoi Go a été conçu ainsi. Spoiler : après avoir lu cet article, vous ne craindrez plus les fichiers inutiles et saurez garder vos projets propres et organisés.

\n\n

Comment fonctionne go get : les bases essentielles

\n\n

Avant de supprimer, comprenons où le package est installé. Dans Go (avant la version 1.16, mais cette information est toujours pertinente), la commande go get téléchargeait le code source du package dans deux répertoires :

\n\n
    \n
  • $GOPATH/src — le code source du package (comme si vous aviez cloné le dépôt) ;
  • \n
  • $GOPATH/pkg — les fichiers objets compilés (.a).
  • \n
\n\n

Si vous utilisez les modules Go (et depuis la version 1.16, c'est le mode par défaut), go get fonctionne différemment : il ajoute la dépendance dans go.mod et télécharge le module dans le cache ($GOPATH/pkg/mod).

\n\n

Le problème est que Go n'a pas de commande intégrée pour « supprimer un package ». Les développeurs du langage estiment que si un package ne vous est plus utile, il suffit de ne plus l'importer dans votre code. Cela semble logique, mais que faire si vous voulez libérer de l'espace ou faire le ménage ?

\n\n

Méthode n°1 : go clean -i (pour les anciens projets sans modules)

\n\n

Avant l'ère des modules, il existait la commande go clean -i. Elle supprimait les fichiers compilés du package dans $GOPATH/pkg. Mais elle ne touchait pas au code source. Autrement dit, vous supprimiez uniquement les artefacts binaires, mais le code restait dans src.

\n\n
# Supprimer les fichiers compilés du package\ngo clean -i github.com/example/package\n\n# Le code source est toujours là :\nls $GOPATH/src/github.com/example/package
\n\n

En pratique, ce n'était pas pratique. C'est pourquoi dans les versions modernes de Go (à partir de la 1.12), go clean -i est déprécié. Si vous tapez go clean -i aujourd'hui, Go ignore simplement le flag -i et exécute un simple go clean (suppression des fichiers objets dans le projet courant).

\n\n

Méthode n°2 : Suppression manuelle dans GOPATH (pour les vétérans)

\n\n

Si vous travaillez encore sans modules (ou si vous voulez simplement nettoyer de vieux fichiers), vous devrez passer par une suppression manuelle. Voici la recette complète :

\n\n
    \n
  1. Trouvez où se trouve votre $GOPATH :
  2. \n
\n\n
go env GOPATH
\n\n

Généralement, c'est /home/user/go ou C:\\Users\\user\\go.

\n\n
    \n
  1. Supprimez le code source :
  2. \n
\n\n
rm -rf $GOPATH/src/github.com/example/package
\n\n
    \n
  1. Supprimez les fichiers compilés (s'ils existent) :
  2. \n
\n\n
rm -rf $GOPATH/pkg/linux_amd64/github.com/example/package.a
\n\n
\n

Important : Le chemin du fichier .a dépend de votre système d'exploitation et de votre architecture. linux_amd64 est un exemple typique. Vous pouvez connaître le chemin exact avec go list -m, mais il est plus simple de supprimer tout le dossier du package dans pkg.

\n
\n\n

Cette méthode fonctionne, mais elle est brutale. Vous risquez de supprimer accidentellement quelque chose d'important. De plus, si le package était utilisé dans d'autres projets, ceux-ci cesseront de fonctionner.

\n\n

Méthode n°3 : L'approche moderne — go mod tidy

\n\n

Si vous utilisez les modules Go (et vous devriez les utiliser si vous avez commencé à apprendre en 2024), tout est beaucoup plus élégant. Lorsque vous cessez d'importer un package dans votre code, il cesse automatiquement d'être

Blogs

Book Recommendations