在Linux(Mint)中安装Go并修改bashrc

我想在我的Linux Mint机器上安装Google的Go语言。 我是Linux新手,因此不容易遵循我读过的一些指令。 也就是说,我被告知要编辑/修改bashrc文件:

export GOROOT=$HOME/gosource export GOARCH=amd64 export GOOS=linux export GOBIN=$HOME/bin export PATH=$PATH:$GOBIN 

我不知道该怎么做 我inputgedit ~/.bashrc

进入terminal并出现空白页面。 我放入代码并保存。 然后呢

 hg clone -u https://go.googlecode.com/hg/ go 

获取源代码。 它是否正确? 因为我然后试图编译代码,并出现一长串错误(我没有 – 我使用不同的PC不幸的莫)。

但如果任何人都可以帮我安装Go,我会很感激。

解:

除了在下面的答案中提到和解决的各种问题,我忘了安装以下内容

 sudo apt-get install bison ed gawk gcc libc6-dev make 

这是在golang.com安装页面的顶部提到的。

除此之外,你试图克隆版本库~/go编辑~/.bashrc指向$GOROOT ~/gosource

仔细阅读Go Getting Started说明。 复制和粘贴命令,或者仔细检查你输入的内容; 在输入之前仔细检查输入。 对于命令, $符号代表命令提示符,不要输入。 请记住,Linux是区分大小写的,而且/\之间的区别很重要。 仔细检查命令的输出; 输出是否有意义。 运行诸如envpwd类的诊断命令,以及uname 。 当您在堆栈溢出答案中看到滚动条时,滚动查看所有代码和输出。

首先,设置~/.bashrc

 $ gedit ~/.bashrc export GOROOT=$HOME/go export GOARCH=amd64 export GOOS=linux export GOBIN=$GOROOT/bin export PATH=$PATH:$GOBIN 

关闭任何打开的终端窗口,然后打开一个新的终端窗口来检查新的~./bashrc和其他值。

 $ 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 

然后将存储库克隆到$GOROOT ,你将克隆到相同的地方并编译。

 $ 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 

你还没有发布你的输出,所以我只能猜测你的问题是什么。

例如,你说“目录是Go”,它应该是“去”; 由于Linux区分大小写,“Go”和“Go”是不同的。

如果您从hg clone命令中省略$GOROOT目标,或者未设置$GOROOT ,则hg clone将默认为hg目录。 例如,

 $ env | grep '^GOROOT' GOROOT= $ hg clone -u release https://go.googlecode.com/hg/ $GOROOT destination directory: hg 

既然你有GOARCH=amd64 ,你应该在x86_64处理器上运行64位版本的Linux Mint。 你的uname -a输出是什么意思? 您希望6g6l程序在x86_64处理器上进行编译和链接,该处理器应位于$GOBIN目录中,该目录应位于$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 

您也应该通过阅读./all.bash命令输出的结尾来看到这一点。

 ALL TESTS PASSED --- Installed Go for linux/amd64 in /home/peter/go. Installed commands in /home/peter/go/bin. The compiler is 6g. 

代替

 gedit /.bashrc 

你应该输入

 gedit ~/.bashrc 

事实上,你能够保存它(?!)表明,要么你错误地输入了你的问题,或者你是以root身份运行gedit 。 您需要将gedit作为将要进行编译的用户(您的用户)运行,以确保编辑正确的文件。

在最简单的情况下,不需要调整环境。

克隆后,做

 cd go/src ./all.bash 

去编译。 编译完成后,你会被告知它的安装位置以及如何运行。 那么你可能想要真正修改你的环境来更新PATH变量。 但是这个问题实际上超出了Go语言的范围,所以按照Robin Green的建议。

PS Debian的golang软件包最近已经上传到unstable了(看到这个bug ),所以可能是更好的办法来获取源码包,并从中构建真正的Debian软件包。