Suppression des packages installés avec go get


227

J'ai couru go get packagepour télécharger un package avant d'apprendre que je devais configurer mon GOPATHsinon ce package entache mon installation Go racine (je préférerais de loin garder mon installation Go propre et séparer le noyau de la personnalisation). Comment supprimer les packages installés précédemment?


2
Pour ceux qui utilisent les modules Go stackoverflow.com/questions/57186705/…
jesugmz

Réponses:


187

Il est sûr de simplement supprimer le répertoire source et le fichier de package compilé. Trouvez le répertoire source sous $GOPATH/srcet le fichier paquet sous $GOPATH/pkg/<architecture>, par exemple: $GOPATH/pkg/windows_amd64.


5
Au début, j'ai cherché $ GOPATH / pkg / architecture / qui n'existait pas. Ensuite, j'ai réalisé que vous faisiez référence à $ GOPATH / pkg / {{architecture}}, par exemple $ GOPATH / pkg / windows_amd64.
Nucleon

1
La valeur par défaut GOPATHest /usr/lib/go.
Flimm

246
S'il est sûr et simple, pourquoi n'y a-t-il pas de sous-commande go qui le fasse?
Bengt

71
venant de npm, nous avons tellement plus loingo
slf

4
Sur Mac: $ GOPATH = $ HOME / go
Ricardo Martins

152

Vous pouvez supprimer les fichiers d'archive et les fichiers exécutables qui go install(ou go get) produisent pour un package avec go clean -i importpath.... Ceux-ci résident normalement sous $GOPATH/pkget $GOPATH/bin, respectivement.

Assurez-vous de l'inclure ...dans le chemin d'importation, car il semble que, si un package comprend un exécutable, go clean -iil ne supprimera que les fichiers d'archive pour les sous-packages, comme gore/gocodedans l'exemple ci-dessous.

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

go cleana un -nindicateur pour un essai à sec qui imprime ce qui sera exécuté sans l'exécuter, donc vous pouvez en être certain (voir go help clean). Il a également un -rindicateur tentant de nettoyer récursivement les dépendances, que vous ne voulez probablement pas réellement utiliser, car vous verrez à partir d'une exécution à sec qu'il supprimera de nombreux fichiers d'archive de bibliothèque standard!

Un exemple complet, sur lequel vous pouvez baser un script 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

Notez que ces informations sont basées sur l' gooutil de Go version 1.5.1.


2
Comment trouvez-vous toutes les dépendances des projets?
Michael Mallett

5
#!/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 compiled 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.