2.3 在 Linux 上安装 Go

最后更新于:2022-04-01 20:53:22

如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:[Download the Go distribution](http://golang.org/doc/install)。 我们接下来也会带你一步步的完成安装过程。 1. 设置 Go 环境变量 我们在 Linux 系统下一般通过文件 `$HOME/.bashrc` 配置自定义环境变量,根据不同的发行版也可能是文件`$HOME/.profile`,然后使用 gedit 或 vi 来编辑文件内容。 ~~~ export GOROOT=$HOME/go ~~~ 为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容: ~~~ export PATH=$PATH:$GOROOT/bin ~~~ 在开发 Go 项目时,你还需要一个环境变量来保存你的工作目录。 ~~~ export GOPATH=$HOME/Applications/Go ~~~ `$GOPATH` 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 `go get`(远程包安装命令)时远程包将会被安装在第一个目录下。 在完成这些设置后,你需要在终端输入指令 `source .bashrc` 以使这些环境变量生效。然后重启终端,输入 `go env`和 `env` 来检查环境变量是否设置正确。 2. 安装 C 工具 Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令( **译者注:由于网络环境的特殊性,你可能需要将每个工具分开安装** )。 ~~~ sudo apt-get install bison ed gawk gcc libc6-dev make ~~~ 你可以在其它发行版上使用 RPM 之类的工具。 3. 获取 Go 源代码 从 [官方页面](https://golang.org/dl/) 或 [国内镜像](http://www.golangtc.com/download) 下载 Go 的源码包到你的计算机上,然后将解压后的目录 `go` 通过命令移动到 `$GOROOT` 所指向的位置。 ~~~ wget https://storage.googleapis.com/golang/go.src.tar.gz tar zxv go.src.tar.gz sudo mv go $GOROOT ~~~ 4. 构建 Go 在终端使用以下指令来进行编译工作。 ~~~ cd $GOROOT/src ./all.bash ~~~ 在完成编译之后(通常在 1 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终端看到如下信息被打印: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-10-23_5629d84c2183a.png) 图 2.3 完成编译后在终端打印的信息 **注意事项** 在测试 `net/http` 包时有一个测试会尝试连接 `google.com`,你可能会看到如下所示的一个无厘头的错误报告: ~~~ ‘make[2]: Leaving directory `/localusr/go/src/pkg/net’ ~~~ 如果你正在使用一个带有防火墙的机器,我建议你可以在编译过程中暂时关闭防火墙,以避免不必要的错误。 解决这个问题的另一个办法是通过设置环境变量 `$DISABLE_NET_TESTS` 来告诉构建工具忽略 `net/http` 包的相关测试: ~~~ export DISABLE_NET_TESTS=1 ~~~ 如果你完全不想运行包的测试,你可以直接运行 `./make.bash` 来进行单纯的构建过程。 5. 测试安装 使用你最喜爱的编辑器来输入以下内容,并保存为文件名 `test.go`。 示例 2.1 [hello_world1.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/examples/chapter_2/hello_world1.go) ~~~ package main func main() { println("Hello", "world") } ~~~ 切换相关目录到下,然后执行指令 `go run hello_world1.go`,将会打印信息:`Hello, world`。 6. 验证安装版本 你可以通过在终端输入指令 `go version` 来打印 Go 的版本信息。 如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。 示例 2.2 [version.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/examples/chapter_2/version.go) ~~~ package main import ( "fmt" "runtime" ) func main() { fmt.Printf("%s", runtime.Version()) } ~~~ 这段代码将会输出 `go1.4.2` 或类似字符串。 7. 更新版本 你可以在 [发布历史](http://golang.org/doc/devel/release.html) 页面查看到最新的稳定版。 当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。 Go 的源代码有以下三个分支: ~~~ - Go release:最新稳定版,实际开发最佳选择 - Go weekly:包含最近更新的版本,一般每周更新一次 - Go tip:永远保持最新的版本,相当于内测版 ~~~ 当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。
';