Go get ile yüklenmiş paketleri kaldırma


227

Koştum go get packageBen benim ayarlamak için gerekli öğrenme önce bir paket indirmek için GOPATH(Ben çok benim git özel temiz ve ayrı çekirdeğini yüklemek tutmayı tercih ediyorum) aksi paketin benim kök Git yüklemek sullies söyledi. Önceden yüklenmiş paketleri nasıl kaldırabilirim?


2
Go modüllerini kullananlar için stackoverflow.com/questions/57186705/…
jesugmz

Yanıtlar:


187

Sadece kaynak dizini ve derlenmiş paket dosyasını silmek güvenlidir. Altında kaynak dizini bulun $GOPATH/srcve altındaki paket dosyasını $GOPATH/pkg/<architecture>örneğin: $GOPATH/pkg/windows_amd64.


5
İlk başta yoktu $ GOPATH / pkg / mimarisi / aradı. Sonra bahsettiğiniz şeyin $ GOPATH / pkg / {{architecture}}, örneğin $ GOPATH / pkg / windows_amd64 olduğunu fark ettim.
Nucleon

1
Varsayılan değeri GOPATHolan /usr/lib/go.
Flimm

246
Güvenli ve basitse, neden bunu yapan bir alt komut yoktur?
Bengt

71
npm geliyor, biz çok daha vargo
slf

4
Mac'te: $ GOPATH = $ HOME / go
Ricardo Martins

152

Bir paket için go install(veya go get) oluşturduğu arşiv dosyalarını ve yürütülebilir ikili dosyaları silebilirsiniz go clean -i importpath.... Bunlar normalde sırasıyla $GOPATH/pkgve altında bulunur $GOPATH/bin.

...İçe aktarma yoluna dahil ettiğinizden emin olun , çünkü bir paket yürütülebilir dosya içeriyorsa, go clean -iyalnızca gore/gocodeörnekte olduğu gibi alt paketler için dosyaları arşivlemeyecek ve bunları arşivlemeyecektir .

Kaynak kodun daha sonra manuel olarak kaldırılması gerekir $GOPATH/src.

go clean-nkuru çalıştırma için, çalıştırılmadan çalıştırılacakları basan bir bayrağa sahiptir , böylece emin olabilirsiniz (bkz. go help clean). Ayrıca, -rbağımlılıkları tekrarlayan bir şekilde temizlemek için cazip bir bayrağa sahiptir , muhtemelen kullanmak istemediğiniz için kuru bir çalışmadan çok sayıda standart kütüphane arşiv dosyasını sileceğini göreceksiniz!

İsterseniz bir komut dosyasını dayandırabileceğiniz tam bir örnek:

$ 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

Bu bilgilerin goGo sürüm 1.5.1'deki araca dayandığını unutmayın .


2
Tüm proje bağımlılıklarını nasıl buluyorsunuz?
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
}

Kullanımı:

# 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.