Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing packages installed with go get

Tags:

go

I ran go get package to download a package before learning that I needed to set my GOPATH otherwise that package sullies my root Go install (I would much prefer to keep my Go install clean and separate core from custom). How do I remove packages installed previously?

like image 461
Nucleon Avatar asked Dec 09 '12 21:12

Nucleon


People also ask

Where are packages installed with go get?

The packages from the standard library are available at the “pkg” subdirectory of the GOROOT directory. When you install Go, an environment variable GOROOT will be automatically added to your system for specifying the Go installer directory.

How do you clean go modules?

go clean -modcache This command is used to clear the mod cache which is stored at $GOPATH/pkg/mod . This command is used to remove the installed packages. The -modcache flag removes the entire module download cache, including unpacked source code of versioned dependencies.


2 Answers

It's safe to just delete the source directory and compiled package file. Find the source directory under $GOPATH/src and the package file under $GOPATH/pkg/<architecture>, for example: $GOPATH/pkg/windows_amd64.

like image 97
Sonia Avatar answered Sep 22 '22 10:09

Sonia


You can delete the archive files and executable binaries that go install (or go get) produces for a package with go clean -i importpath.... These normally reside under $GOPATH/pkg and $GOPATH/bin, respectively.

Be sure to include ... on the importpath, since it appears that, if a package includes an executable, go clean -i will only remove that and not archive files for subpackages, like gore/gocode in the example below.

Source code then needs to be removed manually from $GOPATH/src.

go clean has an -n flag for a dry run that prints what will be run without executing it, so you can be certain (see go help clean). It also has a tempting -r flag to recursively clean dependencies, which you probably don't want to actually use since you'll see from a dry run that it will delete lots of standard library archive files!

A complete example, which you could base a script on if you like:

$ 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 

Note that this information is based on the go tool in Go version 1.5.1.

like image 32
ches Avatar answered Sep 24 '22 10:09

ches