Eliminación de paquetes instalados con go get


Corrí go get package para descargar un paquete antes de aprender que necesitaba configurar mi GOPATH de lo contrario ese paquete mancilla mi instalación de Go root (preferiría mantener mi instalación de Go limpia y separada del núcleo personalizado). ¿Cómo puedo eliminar paquetes instalados anteriormente?

 139
go
Author: Nucleon, 2012-12-10

3 answers

Es seguro simplemente eliminar el directorio fuente y el archivo de paquete compilado. Encuentre el directorio fuente bajo $GOPATH/src y el archivo de paquete bajo $GOPATH/pkg/<architecture>, por ejemplo: $GOPATH/pkg/windows_amd64.

 112
Author: Sonia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 18:22:54

Puede eliminar los archivos y binarios ejecutables que go install (o go get) produce para un paquete con go clean -i importpath.... Estos normalmente residen en $GOPATH/pkg y $GOPATH/bin, respectivamente.

Asegúrese de incluir ... en la ruta de importación, ya que parece que, si un paquete incluye un ejecutable, go clean -i solo lo eliminará y no archivará archivos para subpaquetes, como gore/gocode en el ejemplo.

El código fuente debe eliminarse manualmente de $GOPATH/src.

go clean tiene un -n bandera para un simulacro que imprime lo que se ejecutará sin ejecutarlo, por lo que puede estar seguro (ver go help clean). También tiene una tentadora bandera -r para limpiar recursivamente las dependencias, que probablemente no desee usar ya que verá en un simulacro que eliminará muchos archivos de archivo de bibliotecas estándar.

Un ejemplo completo, en el que podría basar un script si lo desea, es el siguiente.

$ 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

Tenga en cuenta que esta información se basa en la herramienta go en Go versión 1.5.1.

 95
Author: ches,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-15 10:46:47
#!/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
}

Uso:

# 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
 0
Author: ecwpz91,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 20:04:08