What is the best practice to install packages (those with go get...
) in a local directory?
Example: I'd like to try out the Revel web framework, but I don't want to clutter my go installation at /usr/local/go
.
Normally I'd say sudo go get github.com/robfig/revel
as written on the home page, but that would install it beneath /usr/local/go/src/pkg/...
.
Is there an easy way to say (for example) go get --local ...
and have the package in the current (sub) directory?
You can export the env variable
GOPATH
. For me it is~/local/lib/go
. This folder has the subfoldersbin
,pkg
andsrc
, so it's just like/usr/local/go
. Thego
-tool will then automatically download , build and install packages into this directory.To expand on keks answer, you can update your .bashrc to look like this
Now all packages installed with
go get
are separate from the go distribution.You might want to consider using Go Version Manager (gvm).
Apart from switching between Go versions easily, it also lets you switch between pkgsets ("workspaces").
First you create a set
and then you use it
Works like a charm.
In modern module enabled go (introduced in go 1.11), you can use the gobin program with a GOBIN env var specifying the destination of the binary:
Installation of gobin is done like so: