Enlever les paquets installés avec go get

J’ai couru go get package pour télécharger un paquet avant d’apprendre que je devais régler mon GOPATH sinon ce paquet souille ma racine Allez installer (je préférerais de GOPATH garder mon kernel propre et séparé de l’installation de Go). Comment supprimer des packages installés précédemment?

Vous pouvez simplement supprimer le répertoire source et le fichier de package compilé. Recherchez le répertoire source sous $GOPATH/src et le fichier de package sous $GOPATH/pkg/ , par exemple: $GOPATH/pkg/windows_amd64 .

Vous pouvez supprimer les fichiers d’archive et les fichiers binarys exécutables qui go install (ou go get ) pour un paquet avec go clean -i importpath... Celles-ci résident normalement sous $GOPATH/pkg et $GOPATH/bin respectivement.

Assurez-vous d’inclure ... dans importpath, car il semble que, si un paquet contient un exécutable, go clean -i ne le supprimera que pour archiver les fichiers des sous-paquetages, comme gore/gocode dans l’exemple.

Le code source doit alors être supprimé manuellement de $GOPATH/src .

go clean a un drapeau -n pour un run sec qui imprime ce qui sera exécuté sans l’exécuter, vous pouvez donc être certain (voir go help clean ). Il comporte également un indicateur -r tentant de nettoyer récursivement les dépendances, ce que vous ne voudrez probablement pas utiliser, car vous verrez qu’il supprimera de nombreux fichiers d’archive de bibliothèque standard!

Un exemple complet, sur lequel vous pouvez baser un script si vous voulez, est le suivant.

 $ 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 

Notez que cette information est basée sur l’outil go de la version 1.5.1 de Go.

 #!/bin/bash goclean() { local pkg=$1; shift || return 1 local ost local cnt local scr # Clean removes object files from package source directories (ignore error) go clean -i $pkg &>/dev/null # Set local variables [[ "$(uname -m)" == "x86_64" ]] \ && ost="$(uname)";ost="${ost,,}_amd64" \ && cnt="${pkg//[^\/]}" # Delete the source directory and comstackd package directory(ies) if (("${#cnt}" == "2")); then rm -rf "${GOPATH%%:*}/src/${pkg%/*}" rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*}" elif (("${#cnt}" > "2")); then rm -rf "${GOPATH%%:*}/src/${pkg%/*/*}" rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*/*}" fi # Reload the current shell source ~/.bashrc } 

Usage:

 # Either launch a new terminal and copy `goclean` into the current shell process, # or create a shell script and add it to the PATH to enable command invocation with bash. goclean github.com/your-username/your-repository