开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜