जाने के साथ स्थापित संकुल हटाना


227

मैं go get packageयह जानने से पहले एक पैकेज डाउनलोड करने के लिए भागा कि मुझे अपना GOPATHअन्यथा सेट करने की जरूरत है, क्योंकि पैकेज मेरी जड़ को स्थापित करता है (मैं अपने गो को साफ और कस्टम से अलग कोर रखना पसंद करता हूं)। मैं पहले से इंस्टॉल किए गए पैकेज कैसे निकालूं?


2
गो मॉड्यूल stackoverflow.com/questions/57186705/…
jesugmz

जवाबों:


187

केवल स्रोत निर्देशिका और संकलित पैकेज फ़ाइल को हटाना सुरक्षित है। उदाहरण के लिए, के तहत स्रोत निर्देशिका $GOPATH/srcऔर पैकेज फ़ाइल ढूँढें :।$GOPATH/pkg/<architecture>$GOPATH/pkg/windows_amd64


5
पहले मैंने $ GOPATH / pkg / आर्किटेक्चर के लिए देखा / जो अस्तित्व में नहीं था। तब मुझे एहसास हुआ कि आप जिस चीज का जिक्र कर रहे थे वह $ GOPATH / pkg / {{आर्किटेक्चर}} थी, उदाहरण $ GOPATH / pkg / windows_amd64।
न्यूक्लियर

1
का डिफ़ॉल्ट मान GOPATHहै /usr/lib/go
फ्लिम्स

245
यदि यह सुरक्षित और सरल है, तो कोई गो सबमैंडल क्यों नहीं है जो इसे करता है?
बेंगट

71
go
npm

4
मैक पर: $ GOPATH = $ HOME / go
रिकार्डो मार्टिन्स

152

आप संग्रह फ़ाइलों और निष्पादन योग्य बायनेरिज़ को हटा सकते हैं जो go install(या go get) के साथ पैकेज के लिए पैदा करता है go clean -i importpath...। ये सामान्य रूप से क्रमशः रहते हैं $GOPATH/pkgऔर $GOPATH/bin

...इंपोर्टपथ पर शामिल करना सुनिश्चित करें , क्योंकि ऐसा प्रतीत होता है कि, अगर किसी पैकेज में एक निष्पादन योग्य शामिल है, तो go clean -iकेवल उसी को हटा देगा और उप gore/gocodeउदाहरण के लिए फ़ाइलों को संग्रहीत नहीं करेगा, जैसे नीचे दिए गए उदाहरण में।

स्रोत कोड तो मैन्युअल रूप से हटाया जाना चाहिए $GOPATH/src

go cleanएक है -nएक सूखी रन है कि प्रिंट क्या है, यह क्रियान्वित करने के बिना चला जाएगा, ताकि आप कुछ किया जा सकता है (देखें के लिए ध्वज go help clean)। इसमें -rपुनरावर्ती स्वच्छ निर्भरता के लिए एक आकर्षक झंडा भी है , जिसे आप वास्तव में उपयोग नहीं करना चाहते हैं क्योंकि आप सूखे रन से देखेंगे कि यह बहुत सारे मानक पुस्तकालय संग्रह फ़ाइलों को हटा देगा!

एक संपूर्ण उदाहरण, जिसे आप पसंद करने पर स्क्रिप्ट को आधार बना सकते हैं:

$ 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

ध्यान दें कि यह जानकारी goगो संस्करण 1.5.1 में उपकरण पर आधारित है ।


2
आप सभी परियोजनाओं पर निर्भरता कैसे पाते हैं?
माइकल मैलेट्स

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
}

उपयोग:

# 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.