Installing Go in Linux(Mint) and modifying bashrc
I want to install Google's Go Language on my Linux Mint machine. I'm new to Linux so its not easy to follow some of the instructions I have read. Namely, I have been told to edit/mod the bashrc file:
export GOROOT=$HOME/gosource
export GOARCH=amd64
export GOOS=linux
export GOBIN=$HOME/bin
export PATH=$PATH:$GOBIN
I don't know how to do this. I typed gedit ~/.bashrc
into the terminal and a blank page appeared. I put in the code and saved it. Then did
hg clone -u https://go.googlecode.com/hg/ go
to get the source code. Is this correct? Because 开发者_JS百科I then tried to compile the code and a long list of errors appeared (which I don't have - I'm using a different PC at the mo unfortunately).
But if anyone can help me install Go, I'd appreciate it.
SOLUTION:
Aside from various problems mentioned and solved in the answers below, I had forgotten to install the following
sudo apt-get install bison ed gawk gcc libc6-dev make
WHich is mentioned at the top of the golang.com install page.
Amongst other things, you tried to clone the repository to ~/go
and edited ~/.bashrc
to point $GOROOT
to ~/gosource
.
Read the Go Getting Started instructions carefully. Either copy and paste commands or check what you type very carefully; check input very carefully before you hit enter. For commands, the $
sign represents the command prompt, don't type it. Remember, Linux is case sensitive and the distinction between /
and \
is important. Check the output of commands very carefully; does the ouput make sense. Run diagnostic commands like env
, pwd
, which
, and uname
. When you see scroll bars in a Stack Overflow answer, scroll through all the code and output.
First, set up ~/.bashrc
.
$ gedit ~/.bashrc
export GOROOT=$HOME/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
Close any open terminal windows and then open a new terminal window to check the new ~./bashrc
and other values.
$ env | grep '^\(GO\|HOME=\|PATH=\)'
GOBIN=/home/peter/go/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peter/go/bin
GOARCH=amd64
HOME=/home/peter
GOROOT=/home/peter/go
GOOS=linux
$ cd $GOROOT/src
$ pwd
/home/peter/go/src
$ uname -a
Linux peter 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:25:51 UTC 2011 x86_64 GNU/Linux
Then clone the repository to $GOROOT
and you will clone to and compile from the same place.
$ hg clone -u release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 8441 changesets with 31916 changes to 4421 files (+1 heads)
updating to branch release-branch.r57
2702 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd $GOROOT/src
$ ./all.bash
< SNIP OUTPUT >
ALL TESTS PASSED
---
Installed Go for linux/amd64 in /home/peter/go.
Installed commands in /home/peter/go/bin.
The compiler is 6g.
$ which 6g
/home/peter/go/bin/6g
You haven't posted your output, so I can only guess what your problems are.
For example, you say "the directory is Go", it should be "go"; since Linux is case sensitive, "Go" and "go" are different.
If you omit the $GOROOT
destination from the hg clone
command or $GOROOT
is not set, hg clone
will default to the hg
directory. For example,
$ env | grep '^GOROOT'
GOROOT=
$ hg clone -u release https://go.googlecode.com/hg/ $GOROOT
destination directory: hg
Since you have GOARCH=amd64
, you should be running a 64-bit version of Linux Mint on an x86_64
processor. What does your uname -a
output say? You want the 6g
and 6l
programs to compile and link on an x86_64
processor, which should be in your $GOBIN
directory, which should be in in your $PATH
.
$ env | grep '^\(GOBIN\|PATH=\)'
GOBIN=/home/peter/go/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/peter/go/bin
$ which 6g
/home/peter/go/bin/6g
You should also have seen this by reading the end of your ./all.bash
command output.
ALL TESTS PASSED
---
Installed Go for linux/amd64 in /home/peter/go.
Installed commands in /home/peter/go/bin.
The compiler is 6g.
Instead of
gedit /.bashrc
you should have typed
gedit ~/.bashrc
The fact that you were able to save it(?!) indicates that either you typo'd what you actually typed in your question, or you were running gedit
as root. You need to run gedit
as the same user (your user) that will be doing the compiling, to ensure that you edit the right file.
There's no need to tweak the environment in the simplest case.
After cloning, do
cd go/src
./all.bash
to get Go compiled. After compiling you'll be told where it's installed and how to run it. Then you might want to really modify your environment to update the PATH
variable. But this question is really out of scope of the Go language, so do what Robin Green suggested.
P.S. The Debian packages for golang have recently been uploaded to unstable (see this bug), so may be it would be a better idea to grab the source package and build a real Debian package(s) from it.
精彩评论