在 ubuntu 安装 Go

1转载自: https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/02.3.md,记录下后看 2

如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:http://golang.org/doc/install.html。

我们接下来也会带你一步步的完成安装过程。

设置 Go 环境变量

我们在 Linux 系统下一般通过文件 $HOME/.bashrc 配置自定义环境变量,根据不同的发行版也可能是文件$HOME/.profile,然后使用 gedit 或 vi 来编辑文件内容。

1export GOROOT=$HOME/go 2export GOBIN=$GOROOT/bin 3export GOARCH=386 4export GOOS=linux 5

( 译者注:目前的 Go 版本一般情况下已不需要设置 $GOBIN )

为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容:

1export PATH=$GOROOT/bin:$PATH 2

在开发 Go 项目时,你还需要一个环境变量来保存你的工作目录。

1export GOPATH=$HOME/Applications/Go 2

$GOPATH 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 go get(远程包安装命令)时远程包将会被安装在第一个目录下。

在完成这些设置后,你需要在终端输入指令 source .bashrc 以使这些环境变量生效。然后重启终端,输入 go env和 env 来检查环境变量是否设置正确。

图2.2 在终端输入 go env 后打印的信息

安装 C 工具

Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令( 译者注:由于网络环境的特殊性,你可能需要将每个工具分开安装 )。

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

你可以在其它发行版上使用 RPM 之类的工具。

安装 Mercurial

Go 源代码是通过 Mercurial 来进行版本管理的,因此你必须在你下载 Go 源代码之前安装这款工具。你可以使用指令hg 来检查你的计算机上是否已经安装该工具,如果没有,请使用以下指令来完成安装:

1sudo apt-get install python-setuptools  2sudo apt-get install python-dev  3sudo apt-get install build-essential  4sudo apt-get install mercurial 5

获取 Go 源代码

通过以下指令来从服务器获取 Go 源代码到你的计算机上,这里我们直接使用 $GOROOT 的值,在获取源代码之前,你不能手动创建相关目录,否则将导致获取失败。

1hg clone -r release https://go.googlecode.com/hg/ $GOROOT 2

构建 Go

在终端使用以下指令来进行编译工作。

1cd $GOROOT/src./all.bash 2

在完成编译之后(通常在 1 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终端看到如下信息被打印:

图2.3 完成编译后在终端打印的信息

注意事项

如果你在编译过程中发生错误,请尝试使用指令 hg pull -u 来更新源代码,然后进行第 5 步。

注意事项

在测试 net/http 包时有一个测试会尝试连接 google.com,你可能会看到如下所示的一个无厘头的错误报告:

1‘make[2]: Leaving directory `/localusr/go/src/pkg/net’ 2

如果你正在使用一个带有防火墙的机器,我建议你可以在编译过程中暂时关闭防火墙,以避免不必要的错误。

解决这个问题的另一个办法是通过设置环境变量 $DISABLE_NET_TESTS 来告诉构建工具忽略 net/http 包的相关测试:

1export DISABLE_NET_TESTS=1 2

如果这样还是没有办法阻止错误的发生的话,你可以通过添加 net 包到忽略测试列表,这个列表在$GOROOT/src/pkg 下的 Makefile 中。

如果你完全不想运行包的测试,你可以直接运行 ./make.bash 来进行单纯的构建过程。

测试安装

使用你最喜爱的编辑器来输入以下内容,并保存为文件名 test.go。

Example 2.1 hello_world1.go

1package main 2func main() { 3    println("Hello""world") 4} 5

切换相关目录到下,然后执行指令 go run hello_world1.go,将会打印信息:Hello, world。

验证安装版本

你可以通过在终端输入指令 go version 来打印 Go 的版本信息。

如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。

Example 2.2 version.go

1package main 2 3import ( 4    "fmt" 5    "runtime" 6) 7 8func main() { 9    fmt.Printf("%s", runtime.Version()) 10} 11

这段代码将会输出 go1.3.3% 。

更新源代码版本

在终端输入以下指令来完成源代码的更新:

1cd $GOROOT 2hg pull 3hg update release 4cd src 5sudo ./all.bash 6

你可以在这个页面查看到最新的稳定版:http://golang.org/doc/devel/release.html

当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。

Go 的源代码有以下三个分支:

1- Go release:最新稳定版,实际开发最佳选择 2- Go weekly:包含最近更新的版本,一般每周更新一次 3- Go tip:永远保持最新的版本,相当于内测版 4

你可以通过 gofix 这个工具来进行 Go 源代码的版本迁移,将旧版本的代码升级到最新版。

当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。

代码交流 2021