it-swarm.com.de

Entfernen von mit go get installierten Paketen

Ich rannte go get package, um ein Paket herunterzuladen, bevor ich erfahre, dass ich mein GOPATH festlegen muss, andernfalls verschlechtert dieses Paket meine Root-Go-Installation (ich würde es vorziehen, meine Go-Installation sauber zu halten und den Kern von der benutzerdefinierten zu trennen). Wie entferne ich zuvor installierte Pakete?

189
Nucleon

Es ist sicher, nur das Quellverzeichnis und die kompilierte Paketdatei zu löschen. Finden Sie das Quellverzeichnis unter $GOPATH/src und die Paketdatei unter $GOPATH/pkg/<architecture>, beispielsweise: $GOPATH/pkg/windows_AMD64.

151
Sonia

Sie können die Archivdateien und ausführbaren Binärdateien löschen, die go install (Oder go get) Für ein Paket mit go clean -i importpath... Erstellt. Diese befinden sich normalerweise unter $GOPATH/pkg Bzw. $GOPATH/bin.

Stellen Sie sicher, dass Sie ... In den Importpfad aufnehmen, da anscheinend go clean -i, Wenn ein Paket eine ausführbare Datei enthält, nur diese entfernt und keine Dateien für Unterpakete wie gore/gocode Archiviert. im folgenden Beispiel.

Der Quellcode muss dann manuell aus $GOPATH/src Entfernt werden.

go clean Hat ein -n - Flag für einen Probelauf, das ausgibt, was ausgeführt wird, ohne es auszuführen, sodass Sie sicher sein können (siehe go help clean). Es hat auch ein verlockendes -r - Flag, um Abhängigkeiten rekursiv zu bereinigen, was Sie wahrscheinlich nicht wirklich verwenden möchten, da Sie nach einem Probelauf feststellen werden, dass dadurch viele Standardarchivdateien der Bibliothek gelöscht werden!

Ein vollständiges Beispiel, auf das Sie ein Skript aufbauen können, wenn Sie möchten:

$ 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

Beachten Sie, dass diese Informationen auf dem Tool go in Go Version 1.5.1 basieren.

128
ches
#!/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
}

Verwendungszweck:

# 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
3
ecwpz91