|
@@ -1,6 +1,6 @@
|
|
|
# 2.3 在 Linux 上安装 Go
|
|
# 2.3 在 Linux 上安装 Go
|
|
|
|
|
|
|
|
-如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:[http://golang.org/doc/install.html](http://golang.org/doc/install.html)。
|
|
|
|
|
|
|
+如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:[Download the Go distribution](http://golang.org/doc/install)。
|
|
|
|
|
|
|
|
我们接下来也会带你一步步的完成安装过程。
|
|
我们接下来也会带你一步步的完成安装过程。
|
|
|
|
|
|
|
@@ -9,52 +9,36 @@
|
|
|
我们在 Linux 系统下一般通过文件 `$HOME/.bashrc` 配置自定义环境变量,根据不同的发行版也可能是文件 `$HOME/.profile`,然后使用 gedit 或 vi 来编辑文件内容。
|
|
我们在 Linux 系统下一般通过文件 `$HOME/.bashrc` 配置自定义环境变量,根据不同的发行版也可能是文件 `$HOME/.profile`,然后使用 gedit 或 vi 来编辑文件内容。
|
|
|
|
|
|
|
|
export GOROOT=$HOME/go
|
|
export GOROOT=$HOME/go
|
|
|
- export GOBIN=$GOROOT/bin
|
|
|
|
|
- export GOARCH=386
|
|
|
|
|
- export GOOS=linux
|
|
|
|
|
-
|
|
|
|
|
- ( **译者注:目前的 Go 版本一般情况下已不需要设置 $GOBIN** )
|
|
|
|
|
|
|
|
|
|
为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容:
|
|
为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容:
|
|
|
|
|
|
|
|
- export PATH=$GOROOT/bin:$PATH
|
|
|
|
|
|
|
+ export PATH=$PATH:$GOROOT/bin
|
|
|
|
|
|
|
|
在开发 Go 项目时,你还需要一个环境变量来保存你的工作目录。
|
|
在开发 Go 项目时,你还需要一个环境变量来保存你的工作目录。
|
|
|
|
|
|
|
|
export GOPATH=$HOME/Applications/Go
|
|
export GOPATH=$HOME/Applications/Go
|
|
|
|
|
|
|
|
- `$GOPATH` 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 `go get` (远程包安装命令)时远程包将会被安装在第一个目录下。
|
|
|
|
|
|
|
+ `$GOPATH` 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 `go get`(远程包安装命令)时远程包将会被安装在第一个目录下。
|
|
|
|
|
|
|
|
在完成这些设置后,你需要在终端输入指令 `source .bashrc` 以使这些环境变量生效。然后重启终端,输入 `go env` 和 `env` 来检查环境变量是否设置正确。
|
|
在完成这些设置后,你需要在终端输入指令 `source .bashrc` 以使这些环境变量生效。然后重启终端,输入 `go env` 和 `env` 来检查环境变量是否设置正确。
|
|
|
|
|
|
|
|
- 
|
|
|
|
|
-
|
|
|
|
|
- 图2.2 在终端输入 `go env` 后打印的信息
|
|
|
|
|
-
|
|
|
|
|
2. 安装 C 工具
|
|
2. 安装 C 工具
|
|
|
|
|
|
|
|
- Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令( ***译者注:由于网络环境的特殊性,你可能需要将每个工具分开安装*** )。
|
|
|
|
|
|
|
+ Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令( **译者注:由于网络环境的特殊性,你可能需要将每个工具分开安装** )。
|
|
|
|
|
|
|
|
sudo apt-get install bison ed gawk gcc libc6-dev make
|
|
sudo apt-get install bison ed gawk gcc libc6-dev make
|
|
|
|
|
|
|
|
你可以在其它发行版上使用 RPM 之类的工具。
|
|
你可以在其它发行版上使用 RPM 之类的工具。
|
|
|
-
|
|
|
|
|
-3. 安装 Mercurial
|
|
|
|
|
|
|
|
|
|
- Go 源代码是通过 Mercurial 来进行版本管理的,因此你必须在你下载 Go 源代码之前安装这款工具。你可以使用指令 `hg` 来检查你的计算机上是否已经安装该工具,如果没有,请使用以下指令来完成安装:
|
|
|
|
|
|
|
+3. 获取 Go 源代码
|
|
|
|
|
|
|
|
- sudo apt-get install python-setuptools
|
|
|
|
|
- sudo apt-get install python-dev
|
|
|
|
|
- sudo apt-get install build-essential
|
|
|
|
|
- sudo apt-get install mercurial
|
|
|
|
|
|
|
+ 从 [官方页面](https://golang.org/dl/) 下载 Go 的源码包到你的计算机上,然后将解压后的目录 `go` 通过命令移动到 `$GOROOT` 所指向的位置。
|
|
|
|
|
|
|
|
-4. 获取 Go 源代码
|
|
|
|
|
|
|
+ wget https://storage.googleapis.com/golang/go<VERSION>.src.tar.gz
|
|
|
|
|
+ tar zxv go<VERSION>.src.tar.gz
|
|
|
|
|
+ sudo mv go $GOROOT
|
|
|
|
|
|
|
|
- 通过以下指令来从服务器获取 Go 源代码到你的计算机上,这里我们直接使用 `$GOROOT` 的值,在获取源代码之前,你不能手动创建相关目录,否则将导致获取失败。
|
|
|
|
|
-
|
|
|
|
|
- hg clone -r release https://go.googlecode.com/hg/ $GOROOT
|
|
|
|
|
-
|
|
|
|
|
-5. 构建 Go
|
|
|
|
|
|
|
+4. 构建 Go
|
|
|
|
|
|
|
|
在终端使用以下指令来进行编译工作。
|
|
在终端使用以下指令来进行编译工作。
|
|
|
|
|
|
|
@@ -65,11 +49,7 @@
|
|
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
- 图2.3 完成编译后在终端打印的信息
|
|
|
|
|
-
|
|
|
|
|
- **注意事项**
|
|
|
|
|
-
|
|
|
|
|
- 如果你在编译过程中发生错误,请尝试使用指令 `hg pull -u` 来更新源代码,然后进行第 5 步。
|
|
|
|
|
|
|
+ 图 2.3 完成编译后在终端打印的信息
|
|
|
|
|
|
|
|
**注意事项**
|
|
**注意事项**
|
|
|
|
|
|
|
@@ -83,55 +63,50 @@
|
|
|
|
|
|
|
|
export DISABLE_NET_TESTS=1
|
|
export DISABLE_NET_TESTS=1
|
|
|
|
|
|
|
|
- 如果这样还是没有办法阻止错误的发生的话,你可以通过添加 `net` 包到忽略测试列表,这个列表在 `$GOROOT/src/pkg` 下的 Makefile 中。
|
|
|
|
|
-
|
|
|
|
|
如果你完全不想运行包的测试,你可以直接运行 `./make.bash` 来进行单纯的构建过程。
|
|
如果你完全不想运行包的测试,你可以直接运行 `./make.bash` 来进行单纯的构建过程。
|
|
|
|
|
|
|
|
-6. 测试安装
|
|
|
|
|
|
|
+5. 测试安装
|
|
|
|
|
|
|
|
使用你最喜爱的编辑器来输入以下内容,并保存为文件名 `test.go`。
|
|
使用你最喜爱的编辑器来输入以下内容,并保存为文件名 `test.go`。
|
|
|
|
|
|
|
|
- Example 2.1 [hello_world1.go](examples/chapter_2/hello_world1.go)
|
|
|
|
|
|
|
+ 示例 2.1 [hello_world1.go](examples/chapter_2/hello_world1.go)
|
|
|
|
|
|
|
|
- package main
|
|
|
|
|
- func main() {
|
|
|
|
|
- println("Hello", "world")
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ```go
|
|
|
|
|
+ package main
|
|
|
|
|
+
|
|
|
|
|
+ func main() {
|
|
|
|
|
+ println("Hello", "world")
|
|
|
|
|
+ }
|
|
|
|
|
+ ```
|
|
|
|
|
|
|
|
切换相关目录到下,然后执行指令 `go run hello_world1.go`,将会打印信息:`Hello, world`。
|
|
切换相关目录到下,然后执行指令 `go run hello_world1.go`,将会打印信息:`Hello, world`。
|
|
|
|
|
|
|
|
-7. 验证安装版本
|
|
|
|
|
|
|
+6. 验证安装版本
|
|
|
|
|
|
|
|
你可以通过在终端输入指令 `go version` 来打印 Go 的版本信息。
|
|
你可以通过在终端输入指令 `go version` 来打印 Go 的版本信息。
|
|
|
|
|
|
|
|
如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。
|
|
如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。
|
|
|
|
|
|
|
|
- Example 2.2 [version.go](examples/chapter_2/version.go)
|
|
|
|
|
|
|
+ 示例 2.2 [version.go](examples/chapter_2/version.go)
|
|
|
|
|
|
|
|
- package main
|
|
|
|
|
|
|
+ ```go
|
|
|
|
|
+ package main
|
|
|
|
|
|
|
|
- import (
|
|
|
|
|
- "fmt"
|
|
|
|
|
- "runtime"
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ import (
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+ "runtime"
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
- func main() {
|
|
|
|
|
- fmt.Printf("%s", runtime.Version())
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ func main() {
|
|
|
|
|
+ fmt.Printf("%s", runtime.Version())
|
|
|
|
|
+ }
|
|
|
|
|
+ ```
|
|
|
|
|
|
|
|
- 这段代码将会输出 go1.0.3 或 go1.1。
|
|
|
|
|
|
|
+ 这段代码将会输出 `go1.4.2` 或类似字符串。
|
|
|
|
|
|
|
|
-8. 更新源代码版本
|
|
|
|
|
|
|
+7. 更新版本
|
|
|
|
|
|
|
|
- 在终端输入以下指令来完成源代码的更新:
|
|
|
|
|
-
|
|
|
|
|
- cd $GOROOT
|
|
|
|
|
- hg pull
|
|
|
|
|
- hg update release
|
|
|
|
|
- cd src
|
|
|
|
|
- sudo ./all.bash
|
|
|
|
|
-
|
|
|
|
|
- 你可以在这个页面查看到最新的稳定版:[http://golang.org/doc/devel/release.html](http://golang.org/doc/devel/release.html)
|
|
|
|
|
|
|
+ 你可以在 [发布历史](http://golang.org/doc/devel/release.html) 页面查看到最新的稳定版。
|
|
|
|
|
|
|
|
当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。
|
|
当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。
|
|
|
|
|
|
|
@@ -141,8 +116,6 @@
|
|
|
- Go weekly:包含最近更新的版本,一般每周更新一次
|
|
- Go weekly:包含最近更新的版本,一般每周更新一次
|
|
|
- Go tip:永远保持最新的版本,相当于内测版
|
|
- Go tip:永远保持最新的版本,相当于内测版
|
|
|
|
|
|
|
|
- 你可以通过 gofix 这个工具来进行 Go 源代码的版本迁移,将旧版本的代码升级到最新版。
|
|
|
|
|
-
|
|
|
|
|
当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。
|
|
当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。
|
|
|
|
|
|
|
|
## 链接
|
|
## 链接
|