ฉันวิ่งgo get package
ไปดาวน์โหลดแพ็คเกจก่อนที่จะเรียนรู้ว่าฉันจำเป็นต้องตั้งค่าGOPATH
มิฉะนั้นแพ็คเกจนั้นจะติดตั้งรูทของฉันไป (ฉันอยากจะติดตั้ง Go ของฉันให้สะอาดและแยกคอร์จากที่กำหนดเอง) ฉันจะลบแพ็กเกจที่ติดตั้งไว้ก่อนหน้านี้ได้อย่างไร
ฉันวิ่งgo get package
ไปดาวน์โหลดแพ็คเกจก่อนที่จะเรียนรู้ว่าฉันจำเป็นต้องตั้งค่าGOPATH
มิฉะนั้นแพ็คเกจนั้นจะติดตั้งรูทของฉันไป (ฉันอยากจะติดตั้ง Go ของฉันให้สะอาดและแยกคอร์จากที่กำหนดเอง) ฉันจะลบแพ็กเกจที่ติดตั้งไว้ก่อนหน้านี้ได้อย่างไร
คำตอบ:
การลบไดเรกทอรีต้นทางและไฟล์แพคเกจที่คอมไพล์แล้วนั้นปลอดภัย ค้นหาไดเรกทอรีที่มาภายใต้$GOPATH/src
และแฟ้มแพคเกจภายใต้ตัวอย่างเช่น:$GOPATH/pkg/<architecture>
$GOPATH/pkg/windows_amd64
GOPATH
/usr/lib/go
go
คุณสามารถลบไฟล์ที่เก็บและไบนารีปฏิบัติการที่go install
(หรือgo get
) go clean -i importpath...
ผลิตสำหรับแพคเกจที่มี โดยปกติจะอยู่ภายใต้$GOPATH/pkg
และ$GOPATH/bin
ตามลำดับ
ตรวจสอบให้แน่ใจว่าได้รวม...
ไว้ใน importpath เนื่องจากปรากฏว่าหากแพคเกจประกอบด้วยไฟล์ที่เรียกทำงานได้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
เครื่องมือในรุ่น Go 1.5.1
#!/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