From 8bbe8ee7df35a190c29f5876edf37f0da4aa0ffb Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 11 Apr 2013 19:07:26 -0400 Subject: [PATCH] 02.3.md --- README.md | 2 +- eBook/02.3.md | 157 +++++++++++++++++++++-- eBook/02.4.md | 20 +++ eBook/directory.md | 2 + eBook/examples/chapter_2/hello_world1.go | 7 + eBook/examples/chapter_2/version.go | 12 ++ eBook/images/2.3.allbash.png | Bin 0 -> 13436 bytes eBook/images/2.3.goenv.png | Bin 0 -> 12605 bytes 8 files changed, 189 insertions(+), 11 deletions(-) create mode 100644 eBook/02.4.md create mode 100644 eBook/examples/chapter_2/hello_world1.go create mode 100644 eBook/examples/chapter_2/version.go create mode 100644 eBook/images/2.3.allbash.png create mode 100644 eBook/images/2.3.goenv.png diff --git a/README.md b/README.md index 37df69d..51cdba2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! ##翻译进度 -[语言的主要特性与发展的环境和影响因素](eBook/01.2.md) +2.3 [在 Linux 上安装 Go](eBook/02.3.md) ##支持本书 如果你喜欢本书《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。 diff --git a/eBook/02.3.md b/eBook/02.3.md index 2b7f656..e02cd26 100644 --- a/eBook/02.3.md +++ b/eBook/02.3.md @@ -1,15 +1,152 @@ -##啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0 -要不等到 ***2013 年 4 月 13 日*** 再来看看吧~~ +#2.3 在 Linux 上安装 Go +( ***译者注:由于 Go 语言版本更替,本节中的相关内容经原作者同意将被直接替换而不作另外说明*** ) -这里还有一些其它的学习资源噢~ +如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:[http://golang.org/doc/install.html](http://golang.org/doc/install.html)。 - - [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming):已更新至 [第六课](https://github.com/Unknwon/go-fundamental-programming/blob/master/lecture6/lecture6.md) - - [《Go Web编程》](https://github.com/astaxie/build-web-application-with-golang) +我们接下来也会一步步的带你完成安装过程。 -神马?你说你不想学习?那好吧,去逛逛论坛看看行情也行~ +1. 设置 Go 环境变量 -- [Golang中文社区](http://bbs.mygolang.com/forum.php) -- [Go语言学习园地](http://studygolang.com/) -- [Golang中国](http://golang.tc) + 我们一般通过文件 `$HOME/.bashrc` 在 Linux 系统下配置自定义环境变量,根据不同的发行版也可能是文件 `$HOME/.profile`,然后使用 gedit 或 vi 来编辑文件内容。 -#2.3 在 Linux 上安装 Go \ No newline at end of file + export GOROOT=$HOME/go + export GOBIN=$GOROOT/bin + export GOARCH=386 + export GOOS=linux + + ( ***译者注:目前的 Go 版本一般情况下已不需要设置$GOBIN*** ) + + 为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容: + + export PATH=$GOROOT/go/bin:$PATH + + 在开发 Go 项目时,你还需要一个路径作为你的工作目录。 + + export $GOPATH=$HOME/Applications/Go + + `$GOPATH` 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 `go get` (远程包安装命令)时远程包将会被安装在第一个目录下。 + + 在完成这些设置后,你需要在终端输入指令 `source .bashrc` 以使这些环境变量生效。然后重启终端,输入 `go env` 和 `env` 来检查环境变量是否设置正确。 + + ![](images/2.3.goenv.png?raw=true) + + 图2.2 在终端输入 `go evn` 后打印的信息 + +2. 安装 C 工具 + + Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令(如果你的网络状态不太理想,建议每个工具分开安装)。 + + sudo apt-get install bison ed gawk gcc libc6-dev make + + 你可以在其它发行版上使用 RPM 之类的工具。 + +3. 安装 Mercurial + + Go 源代码是通过 Mercurial 来进行版本管理的,因此你必须在你下载 Go 源代码之前安装这款工具。你可以使用指令 `hg` 来检查你的计算机上是否已经安装该工具,如果没有,请使用以下指令来完成安装: + + sudo apt-get install python-setuptools + sudo apt-get install python-dev + sudo apt-get install build-essential + sudo apt-get install mercurial + +4. 获取 Go 源代码 + + 通过以下指令来从服务器获取 Go 源代码到你的计算机上,这里我们直接使用 `$GOROOT` 的值,在获取源代码之前,你不能手动创建相关目录,否则将导致获取失败。 + + hg clone -r release https://go.googlecode.com/hg/ $GOROOT + +5. 构建 Go + + 在终端使用以下指令来进行编译工作。 + + cd $GOROOT/src + ./all.bash + + 在完成编译之后(通过在 1 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终端看到如下信息被打印: + + ![](images/2.3.allbash.png?raw=true) + + 图2.3 完成编译后在终端打印的信息 + + **注意事项** + + 如果你在编译过程中发生错误,请尝试使用指令 `hg pull -u` 来更新源代码,然后进行第 5 步。 + + **注意事项** + + 在测试 `net/http` 包时有一个测试会尝试连接 `google.com`,你可以会看到如下所示的一个无厘头的错误报告: + + ‘make[2]: Leaving directory `/localusr/go/src/pkg/net’ + + 如果你正在使用一个带有防火墙的机器,我建议你可以在编译过程中暂时关闭防火墙,以避免不必要的错误。 + + 解决这个问题的另一个办法是通过设置环境变量 `$DISABLE_NET_TESTS` 来告诉构建工具忽略 `net/http` 包的相关测试: + + export DISABLE_NET_TESTS=1 + + 如果这样还是没有办法阻止错误的发生的话,你可以通过添加 `net` 包到忽略测试列表,这个列表在 `$GOROOT/src/pkg` 下的 Makefile 中。 + + 如果你完全不想运行包的测试,你可以直接运行 `./make.bash` 来进行单纯的构建过程。 + +6. 测试安装 + + 使用你最喜爱的编辑器来输入以下内容,并保存为文件名 `test.go`。 + + Example 2.1 [hello_world1.go](examples/chapter_2/hello_world1.go) + + package main + func main() { + println(“Hello”, “world”) + } + + 切换相关目录到下,然后执行指令 `go run hello_world1.go`,将会打印信息:`Hello, world`。 + +7. 验证安装版本 + + 你可以通过在终端输入指令 `go version` 来打印 Go 的版本信息。 + + 如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。 + + Example 2.2 [version.go](examples/chapter_2/version.go) + + package main + + import ( + "fmt" + "runtime" + ) + + func main() { + fmt.Printf("%s", runtime.Version()) + } + + 这段代码将会输出 go1.0.3 或 go1.1。 + +8. 更新源代码版本 + + 在终端输入以下指令来完成源代码的更新: + + 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) + + 当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。 + + Go 的源代码有以下三个分支: + + - Go release:最新稳定版,实际开发最佳选择 + - Go weekly:包含最近更新的版本,一般每周更新一次 + - Go tip:永远保持最新的版本,相当于内测版 + + 你可以通过 gofix 这个工具来进行 Go 源代码的版本迁移,将旧版本的代码升级到最新版。 + + 当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。 + +##链接 +- [目录](directory.md) +- 上一节:[Go 环境变量](02.2.md) +- 下一节: [在 Mac OS X 上安装 Go](02.4.md) \ No newline at end of file diff --git a/eBook/02.4.md b/eBook/02.4.md new file mode 100644 index 0000000..ea72e1c --- /dev/null +++ b/eBook/02.4.md @@ -0,0 +1,20 @@ +##啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0 +要不等到 ***2013 年 4 月 13 日*** 再来看看吧~~ + +这里还有一些其它的学习资源噢~ + + - [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming):已更新至 [第六课](https://github.com/Unknwon/go-fundamental-programming/blob/master/lecture6/lecture6.md) + - [《Go Web编程》](https://github.com/astaxie/build-web-application-with-golang) + +神马?你说你不想学习?那好吧,去逛逛论坛看看行情也行~ + +- [Golang中文社区](http://bbs.mygolang.com/forum.php) +- [Go语言学习园地](http://studygolang.com/) +- [Golang中国](http://golang.tc) + +#2.4 在 Mac OS X 上安装 Go + +##链接 +- [目录](directory.md) +- 上一节:[在 Linux 上安装 Go](02.3.md) +- 下一节: [在 Windows 上安装 Go](02.5.md) \ No newline at end of file diff --git a/eBook/directory.md b/eBook/directory.md index 9ceaabd..a1b7596 100644 --- a/eBook/directory.md +++ b/eBook/directory.md @@ -9,6 +9,8 @@ - 2.1 [平台与架构](02.1.md) - 2.2 [Go 环境变量](02.2.md) - 2.3 [在 Linux 上安装 Go](02.3.md) + - 2.4 [在 Mac OS X 上安装 Go](02.4.md) + - 2.5 [在 Windows 上安装 Go](02.5.md) - 第3章:编辑器、集成开发环境与其它工具 ##第二部分:语言的核心结构与技术 diff --git a/eBook/examples/chapter_2/hello_world1.go b/eBook/examples/chapter_2/hello_world1.go new file mode 100644 index 0000000..6a6e5a7 --- /dev/null +++ b/eBook/examples/chapter_2/hello_world1.go @@ -0,0 +1,7 @@ +// hello_world1.go +package main + +func main() { + println("Hello", "world") +} + diff --git a/eBook/examples/chapter_2/version.go b/eBook/examples/chapter_2/version.go new file mode 100644 index 0000000..485eec4 --- /dev/null +++ b/eBook/examples/chapter_2/version.go @@ -0,0 +1,12 @@ +package main + +import ( + "fmt" + "runtime" +) + +func main() { + fmt.Printf("%s", runtime.Version()) +} +// Output: +// go1.0.3 or go 1.1 diff --git a/eBook/images/2.3.allbash.png b/eBook/images/2.3.allbash.png new file mode 100644 index 0000000000000000000000000000000000000000..7b791f63edaaadce5515061cacdad0cb29fd5980 GIT binary patch literal 13436 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 literal 0 HcmV?d00001 diff --git a/eBook/images/2.3.goenv.png b/eBook/images/2.3.goenv.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4164ce9b3c5439a05e4246761dceb06fc50d84 GIT binary patch literal 12605 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 Ch*pIF literal 0 HcmV?d00001