2012-12-09 3 views
108

J'ai couru go get package pour télécharger un paquet avant d'apprendre que j'avais besoin de configurer mon GOPATH sinon ce paquet souillera ma racine Go installez (je préférerais de loin mon Go installer propre et séparer le noyau de la coutume) . Comment puis-je supprimer les paquets installés précédemment?Enlever les paquets installés avec go get

Répondre

95

Vous pouvez supprimer le répertoire source et le fichier de package compilé en toute sécurité. Recherchez le répertoire source sous $GOPATH/src et le fichier de package sous $GOPATH/pkg/<architecture>, par exemple: $GOPATH/pkg/windows_amd64.

+5

J'ai d'abord cherché $ GOPATH/pkg/architecture/qui n'existait pas. Puis j'ai réalisé que vous vous référez à $ GOPATH/pkg/{{architecture}}, par exemple $ GOPATH/pkg/windows_amd64. – Nucleon

+1

La valeur par défaut de 'GOPATH' est'/usr/lib/go'. – Flimm

+121

Si c'est sûr et simple, pourquoi n'y a-t-il pas de sous-commande go qui le fait? – Bengt

65

Vous pouvez supprimer les fichiers d'archive et les fichiers binaires exécutables que go install (ou go get) génère pour un package avec go clean -i importpath.... Ceux-ci résident normalement sous $GOPATH/pkg et $GOPATH/bin, respectivement.

Le code source doit ensuite être retiré manuellement de $GOPATH/src.

go clean a un drapeau -n pour une course sèche qui imprime ce qui sera exécuté sans l'exécuter, vous pouvez donc être certain (voir go help clean). Il a également un drapeau -r tentant pour nettoyer récursivement les dépendances, que vous ne voulez probablement pas utiliser puisque vous verrez à partir d'un tirage à blanc qu'il va supprimer beaucoup de fichiers d'archives de la bibliothèque standard!

Un exemple complet, que vous pouvez baser un script sur si vous le souhaitez:

$ go get -u github.com/motemen/gore 

$ which gore 
/Users/ches/src/go/bin/gore 

$ go clean -i -n github.com/motemen/gore... 
cd /Users/ches/src/go/src/github.com/motemen/gore 
rm -f gore gore.exe gore.test gore.test.exe commands commands.exe commands_test commands_test.exe complete complete.exe complete_test complete_test.exe debug debug.exe helpers_test helpers_test.exe liner liner.exe log log.exe main main.exe node node.exe node_test node_test.exe quickfix quickfix.exe session_test session_test.exe terminal_unix terminal_unix.exe terminal_windows terminal_windows.exe utils utils.exe 
rm -f /Users/ches/src/go/bin/gore 
cd /Users/ches/src/go/src/github.com/motemen/gore/gocode 
rm -f gocode.test gocode.test.exe 
rm -f /Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore/gocode.a 

$ go clean -i github.com/motemen/gore... 

$ which gore 

$ tree $GOPATH/pkg/darwin_amd64/github.com/motemen/gore 
/Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore 

0 directories, 0 files 

# If that empty directory really bugs you... 
$ rmdir $GOPATH/pkg/darwin_amd64/github.com/motemen/gore 

$ rm -rf $GOPATH/src/github.com/motemen/gore 

Assurez-vous d'inclure ... sur le ImportPath, car il semble que si un paquet comprend un exécutable go clean -i ne supprimerons que et ne pas archiver les fichiers pour les sous-paquets, comme gore/gocode dans l'exemple. Notez que cette information est basée sur l'outil go dans Go version 1.5.1.

+0

Parfait! Travaillé comme un charme pour moi, merci pour la réponse et l'explication complète sur la façon dont tout fonctionne! –

Questions connexes