Chris
Chris

Reputation: 7310

Trouble installing Go correctly on Ubuntu

I successfully installed this on my Mac, just having trouble on Linux. I'm following along their doc https://golang.org/doc/install. I'm running a 64bit machine so I downloaded the 64bit archive. Once downloaded I run

sudo tar -C /usr/local/ -xzf ~/Downloads/go1.4.2.linux-amd64.tar.gz

I created a go directory in my home folder. I have the structure

/home
--/chrism
----/go
------/src
------/pkg
------/bin

And I add the following to /etc/profile. After saving I run source /etc/profile

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

In src/ I added a directory git.mycompany.com and in their another directory called test. In test/ I made test.go and pasted the block of code from the tutorial above in

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

When I run go run test.go, it outputs the following

chrism@ubuntu:~/go/src/git.mycompany.com/test$ go run test.go 
# fmt
Usage: pack op file.a [name....]
Where op is one of cprtx optionally followed by v for verbose output.
For compatibility with old Go build environments the op string grc is
accepted as a synonym for c.

For more information, run
    godoc cmd/pack
# runtime
Usage: pack op file.a [name....]
Where op is one of cprtx optionally followed by v for verbose output.
For compatibility with old Go build environments the op string grc is
accepted as a synonym for c.

For more information, run
    godoc cmd/pack

If I add more packages to my import statement, it'll output the documentation for all those packages as well.

EDIT 0: I also tried to install with apt-get. I uninstalled and removed my previous changes and then installed. This resulted in the following when running:

chrism@ubuntu:~/go/src/git.mycompany.com/test$ go run test.go 
go build fmt: exec: "/usr/local/go/pkg/tool/linux_amd64/pack": stat /usr/local/go/pkg/tool/linux_amd64/pack: no such file or directory
go build runtime: exec: "/usr/local/go/pkg/tool/linux_amd64/pack": stat /usr/local/go/pkg/tool/linux_amd64/pack: no such file or directory

EDIT 1: This is the output of running go env

GOROOT="/usr/lib/go"
GOBIN=""
GOARCH="amd64"
GOCHAR="6"
GOOS="linux"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"

Upvotes: 15

Views: 18591

Answers (3)

Billal BEGUERADJ
Billal BEGUERADJ

Reputation: 22804

You have chosen a system wide installation, so you could remove this line: export GOPATH=$HOME/go from /etc/profile source again this later file. All other steps you mentioned are not necessary at all. And instead of restarting Terminal as mentioned by a previous answer, you will need to reboot your machine. So by the end all what you have to do is to carefully follow the steps mentioned in the official documentation itself.

Upvotes: 2

Mayank Patel
Mayank Patel

Reputation: 8556

These are the steps I followed for installing Go in my Ubuntu system :

Short Version : 1. Run following commands for installation:

sudo apt-get remove -y gccgo-go && wget http://golang.org/dl/go1.8.linux-amd64.tar.gz && sudo apt-get -y install gcc && sudo tar -C /usr/local -xzf go1.8.2.linux-amd64.tar.gz && echo "export PATH=\$PATH:/usr/local/go/bin" >> ~/.bashrc

Note: Changes the version number to install a specific version of Go. For example, to install 1.9 instead of 1.8 change the file name to go1.9.linux-amd64.tar.gz. The latest Go distributions can always be found at the official Go downloads page

  1. Setup workplace. (Point 6)

Long Version:

  1. Download the binary release from here. Use go x.x.x.linux-amd64.tar.gz for ubuntu. For version 1.4.2 you can type following in terminal.

    wget http://golang.org/dl/go1.8.linux-amd64.tar.gz
    
  2. Install gcc for cgo

    sudo apt-get install gcc 
    
  3. Extract the tarball in /usr/local. It should create a go directory.

    tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz
    

    (Typically these commands must be run as root or through sudo.)

  4. Add /usr/local/go/bin to the PATH environment variable.

    gksu gedit ~/.bashrc
    
  5. Add following line in the end of file

    export PATH=$PATH:/usr/local/go/bin
    
  6. Setup Workspace

    a. Create a workspace directory name go in your preferred location (unless you are using the default go installation location). I am using /home/vembu/work/projects/go

    mkdir -p /home/vembu/work/projects/go
    

    b. Export GOPATH

    gedit ~/.bashrc
    

    c. Add following line in the second last line

    export GOPATH=/home/vembu/work/projects/go
    

    d. For convenience, add the workspace's bin subdirectory to your PATH:

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

    e. Finally .bashrc’s last two line should look like this

    export GOPATH=/home/vembu/work/projects/go
    export PATH=/usr/local/go/bin:$GOPATH/bin:$PATH
    

    f. Restart terminal.

Upvotes: 13

coffekid
coffekid

Reputation: 605

This method is how I usually install on ubuntu machines and never fails. Hope it helps you.

  1. download go

    wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz

  2. extract into /usr/local

    sudo tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz

  3. add these lines to modify ~/.bashrc

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

    export GOPATH=$HOME/go

    export GOBIN=$GOPATH/bin

    export PATH=$PATH:$GOPATH/bin

  4. save and reload sources

    source ~/.bashrc

  5. verify installation

    go env

  6. Create go directory

    mkdir ~/go

  7. Try getting some package

    go get github.com/smartystreets/goconvey

EDIT

I have created a bash script which does the above automatically for you. It always points to the latest go version, so be careful with that.

wget -O - https://raw.githubusercontent.com/mauleyzaola/scripts/master/go/go.install.sh | sh

Then, just reload .bashrc

source ~/.bashrc

Upvotes: 10

Related Questions