mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 01:08:53 +08:00
02.3.md
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展!
|
该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展!
|
||||||
|
|
||||||
##翻译进度
|
##翻译进度
|
||||||
[语言的主要特性与发展的环境和影响因素](eBook/01.2.md)
|
2.3 [在 Linux 上安装 Go](eBook/02.3.md)
|
||||||
|
|
||||||
##支持本书
|
##支持本书
|
||||||
如果你喜欢本书《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。
|
如果你喜欢本书《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。
|
||||||
|
165
eBook/02.3.md
165
eBook/02.3.md
@@ -1,15 +1,152 @@
|
|||||||
##啊哦,亲,你看得也太快了。。。还没翻译完呢 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.3 在 Linux 上安装 Go
|
#2.3 在 Linux 上安装 Go
|
||||||
|
( ***译者注:由于 Go 语言版本更替,本节中的相关内容经原作者同意将被直接替换而不作另外说明*** )
|
||||||
|
|
||||||
|
如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:[http://golang.org/doc/install.html](http://golang.org/doc/install.html)。
|
||||||
|
|
||||||
|
我们接下来也会一步步的带你完成安装过程。
|
||||||
|
|
||||||
|
1. 设置 Go 环境变量
|
||||||
|
|
||||||
|
我们一般通过文件 `$HOME/.bashrc` 在 Linux 系统下配置自定义环境变量,根据不同的发行版也可能是文件 `$HOME/.profile`,然后使用 gedit 或 vi 来编辑文件内容。
|
||||||
|
|
||||||
|
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` 来检查环境变量是否设置正确。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
图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 个小时),你会在终端看到如下信息被打印:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
图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)
|
20
eBook/02.4.md
Normal file
20
eBook/02.4.md
Normal file
@@ -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)
|
@@ -9,6 +9,8 @@
|
|||||||
- 2.1 [平台与架构](02.1.md)
|
- 2.1 [平台与架构](02.1.md)
|
||||||
- 2.2 [Go 环境变量](02.2.md)
|
- 2.2 [Go 环境变量](02.2.md)
|
||||||
- 2.3 [在 Linux 上安装 Go](02.3.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章:编辑器、集成开发环境与其它工具
|
- 第3章:编辑器、集成开发环境与其它工具
|
||||||
|
|
||||||
##第二部分:语言的核心结构与技术
|
##第二部分:语言的核心结构与技术
|
||||||
|
7
eBook/examples/chapter_2/hello_world1.go
Normal file
7
eBook/examples/chapter_2/hello_world1.go
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// hello_world1.go
|
||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
println("Hello", "world")
|
||||||
|
}
|
||||||
|
|
12
eBook/examples/chapter_2/version.go
Normal file
12
eBook/examples/chapter_2/version.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Printf("%s", runtime.Version())
|
||||||
|
}
|
||||||
|
// Output:
|
||||||
|
// go1.0.3 or go 1.1
|
BIN
eBook/images/2.3.allbash.png
Normal file
BIN
eBook/images/2.3.allbash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
eBook/images/2.3.goenv.png
Normal file
BIN
eBook/images/2.3.goenv.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user