Jürgen Paul
Jürgen Paul

Reputation: 15037

Error "cannot download, $GOPATH not set."

Setup:

Have a look at my configuration:

$ echo $GOPATH && ls -r $GOPATH
/home/cyrus/.go
src  pkg  bin

$ echo $GOROOT && ls $GOROOT
/usr/local/go
api  AUTHORS  bin  CONTRIBUTORS  doc  favicon.ico  include  lib  LICENSE  misc  PATENTS  pkg  README  robots.txt  src  test  VERSION

You can see that I've set a path for $GOPATH. In addition, I've created subdirectories that I may not need.

Question:

Why does the following command generate this error message?

$ go get code.google.com/p/go-tour/gotour                                                                                                               
package code.google.com/p/go-tour/gotour: cannot download, $GOPATH not set. For more details see: go help gopath

Upvotes: 30

Views: 29784

Answers (6)

Ajay Singh Rathore
Ajay Singh Rathore

Reputation: 25

$GOPATH should be your current workspace , a folder where your project resides. or just cd ~/go and try to run those commands. Or you can just update $GOPATH in ~/.bashrc or ~/.bashrc_profile on ubuntu

Upvotes: 0

NSP
NSP

Reputation: 1241

First do a `go env' and check the path GOROOT. Accordingly set the GOPATH. In my case, it had to set GOPATH to /usr/lib/go. Earlier i tried it with /usr/share/go and /usr/bin/go but it didn't work.

Upvotes: 0

Sinai
Sinai

Reputation: 1

i had setup GOPATH and it showed correctly with command go env. i had to give the correct permissions to the go directory using chmod and install gb by go get github.com/constabulary/gb/....

Upvotes: 0

Kent Aguilar
Kent Aguilar

Reputation: 5368

When you run go env, you should be able to see if your GOPATH has been set. On my case though, this command solves it when I had it run on my terminal.

export GOPATH=/usr/local/bin

Upvotes: 1

Kyle
Kyle

Reputation: 11

My $GOROOT directory was created with owner: root and group: wheel instead having me as the owner and admin as the group. I'll guess that I used sudo when I shouldn't have (or some tool did it for me). As such go get could not write the packages to $GOROOT and hence the $GOPATH not set and permission denied errors.

By using chown and chgrp on my $GOROOT (with -R to get subfolders) 'go get...' worked. In my case VS Code was now able to install the Go components I was after.

Upvotes: 1

icktoofay
icktoofay

Reputation: 129139

If you set a variable like this:

GOPATH=$HOME/go

It won't be exported to any subprocesses. It's only available to that process. If you want to export it to subprocesses, use export:

export GOPATH

You can also combine the assignment and export:

export GOPATH=$HOME/go

Upvotes: 32

Related Questions