112

I was following the http://tour.golang.org/ untill I got to the third step about that tells you that you can install the gotour on your system. After that I've installed the go language with brew by:

brew install hg brew install go 

Then I downloaded the gotour by:

go get code.google.com/p/go-tour/gotour 

When I tried to launch the gotour it didnt recognise the command:

$ gotour -bash: gotour: command not found 

and

$ go gotour 

and

$ ./gotour 

So I tried to see the go path and it was empty,

echo $GOPATH 

so I defined the GOPATH:

GOPATH=/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/ export GOPATH 

Now I can run the gotour by runing

./gotour 

But I'm insecure about my go enviroment.. wasn't I suposed to be able to run gotour by

go run gotour 

or just by typing (like is described on this website http://www.moncefbelyamani.com/how-to-install-the-go-tour-on-your-mac/):

gotour 

I would like to know if i'm doing things the right way since I'm new to the go programing language.

2
  • 2
    Your GOPATH shouldn't be the same as your GOROOT. Set it to something like $HOME/go and add $GOPATH/bin to your PATH. Commented May 4, 2013 at 14:23
  • BTW the go tour get command and url now changed to: go get golang.org/x/tour/gotour Commented Nov 17, 2016 at 18:28

6 Answers 6

196

Installing go 1.4 with homebrew on OSX:

1) Create Directories

mkdir $HOME/Go mkdir -p $HOME/Go/src/github.com/user 

2) Setup your paths

export GOPATH="${HOME}/.go" export GOROOT="$(brew --prefix golang)/libexec" export PATH=$PATH:$GOPATH/bin export PATH=$PATH:$GOROOT/bin 

3) Install Go

brew install go 

4) "go get" the basics

go get golang.org/x/tools/cmd/godoc 

5) Start here: https://golang.org/doc/code.html at "your first program"

Sign up to request clarification or add additional context in comments.

4 Comments

IntelliJ Idea not finding the GOPATH defined in your .bashrc? In step 2 paste the export lines in .bash_profile, not in .bashrc, restart your mac and IntelliJ will find GOPATH (just tested, reboot needed)
I automated the $GOPATH setup that you describe github.com/camilin87/setup_go
Why are you using $Home/Go with an uppercase G? The homebrew installer uses a lowercase G. E.g. ==> Caveats A valid GOPATH is required to use the `go get` command. If $GOPATH is not specified, $HOME/go will be used by default: https://golang.org/doc/code.html#GOPATH
This answer is super out of date and is causing a ton of issues given the changes to Go and it appears first on Google searches for "How to install Go using Brew". That means a lot of people are being directed to this outdated and inaccurate answer. You no longer have to set any paths for Go stackoverflow.com/a/21012349/3299397 and you only set GOROOT if you're developing the actual language Go (as in you make changes to Go's underlying code reddit.com/r/golang/comments/alrnuk/…)
60

Following a mix of answers above, this is what worked for me on OSX 10.12 (Sierra) and Go v1.7.1 using Homebrew:

I added this from Kosh's answer to my .zshrc or .bashrc:

# Go development export GOPATH="${HOME}/.go" export GOROOT="$(brew --prefix golang)/libexec" export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin" test -d "${GOPATH}" || mkdir "${GOPATH}" test -d "${GOPATH}/src/github.com" || mkdir -p "${GOPATH}/src/github.com" 

Then in a new terminal window/tab:

$ brew install go ==> Downloading https://homebrew.bintray.com/bottles/go-1.7.1.sierra.bottle.tar.gz Already downloaded: /Users/nigel/Library/Caches/Homebrew/go-1.7.1.sierra.bottle.tar.gz ==> Pouring go-1.7.1.sierra.bottle.tar.gz ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command: https://golang.org/doc/code.html#GOPATH You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin ==> Summary 🍺 /usr/local/Cellar/go/1.7.1: 6,436 files, 250.6M $ go get golang.org/x/tools/cmd/godoc $ go get -u golang.org/x/lint/golint $ go get golang.org/x/tour $ tour 2016/10/19 12:06:54 Serving content from /Users/nigel/.go/src/golang.org/x/tour 2016/10/19 12:06:54 A browser window should open. If not, please visit http://127.0.0.1:3999 2016/10/19 12:06:55 accepting connection from: 127.0.0.1:52958 

6 Comments

This worked great for me on Sierra 10.12.5 with go 1.8.3. Thanks!
Worked for me on Catalina 10.15.2 with go 1.13.5 too. Thank you!
Continuing the trend, worked for me on Mojave 10.14.6 with go 1.13.8. I did modify this slightly though: when I export the path, I put the go paths at the front of $PATH rather than at the end. So the third line of my rc file looks like this: export PATH="${GOPATH}/bin:${GOROOT}/bin:$PATH"
As per this GitHub comment, go get github.com/golang/lint/golint has a new path: go get -u golang.org/x/lint/golint
2025 update: go install golang.org/x/lint/golint@latest
|
23

I think I have found the solution, I should have exported:

export PATH=$PATH:/usr/local/Cellar/go/1.0.2/bin/ 

Instead of

GOPATH=/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/ export GOPATH 

Since thats where 'go get' puts the binaries (I guess). gotour is working:

$ gotour 2012/10/11 18:35:50 Serving content from /usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/go-tour 2012/10/11 18:35:50 Open your web browser and visit http://127.0.0.1:3999/ 

Btw I based my answer on this post

http://code.google.com/p/go-tour/issues/detail?id=39 where they talk about exporting:

/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/ 

And the getting started page from go: http://golang.org/doc/install where they say you have to export:

export PATH=$PATH:/usr/local/go/bin 

2 Comments

I had to put an extra bin/ on the end, since it seems now that they put these go executables into a subdirectory now. I.e., the command for my path is: export PATH=$PATH:/usr/local/Cellar/go/1.3.3/bin/bin/
If you haven't installed it with brew but end up here because you can not run go when using zsh, you need to do very same stuff (exporting the path to your go installation). In my case it was: export PATH=$PATH:/usr/local/go/bin If it won't work for you, then you have it probably somwhere else installed.
9

I put this in my ${HOME}/.bash_profile

export GOPATH="${HOME}/.go" export GOROOT="$(brew --prefix golang)/libexec" export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin" test -d "${GOPATH}" || mkdir "${GOPATH}" test -d "${GOPATH}/src/github.com" || mkdir -p "${GOPATH}/src/github.com" 

based on golfadas answer but updated to work with old and new versions of brew.

Comments

8

I thing you should have set the GOPATH before you go get. Well, at least here in my machine this worked smoothly.

I set the GOPATH to a folder in my home folder.

Hope this helps!

1 Comment

This is the right advice. export GOPATH=$HOME/go and export PATH=$PATH:$GOPATH/bin covers all you need. Substitute $HOME/go for the path of your choice.
5

Just an update here - I ran into this same problem, and the previous answers did NOT help. On current (~1.2.2) versions of Go installed by Homebrew, you have to set GOROOT to the following:

export GOROOT=/usr/local/Cellar/go/1.2.2/libexec

I'm a little unfamiliar with the go folder structure, or changes to the go installation via homebrew, so I don't really know why. But - if you're missing what seems like all the core packages, the above should fix.

2 Comments

You could just uninstall your current go version and install the new one. That's what I did and everything worked just fine for me.
With homebrew you always should be using /usr/local/opt/ as the base. This way you don't even have to update the variable when a new version comes out.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.