golang 目前越来越火,包括了 Docker、InfluxDB、etcd 等等,越来越多的工程都在使用 golang 。虽然它的语法都比较 “奇葩”,一些高级语言支持的特性却都不支持,但其高并发、高效率等等,也使其热度不减。
这篇文章主要简单介绍下 golang 环境的搭建。
golang 有多种安装方式,主要包括了三种最常见的安装方式:
第三方工具。也就是一些常见操作系统的软件管理工具,如 Ubuntu 的 apt-get、CentOS 的 yum、Mac 的 homebrew 等,还有就是类似 GVM 的工具。
Go 标准包安装。官网也提供了已经编译好的二进制安装包,支持 Windows、Linux、Mac等系统,包括 X86、ARM 等平台。
Go 源码安装。对于经常使用 *nix 类系统的用户,尤其对于开发者来说,这种方式比较熟悉,而且从源码安装可以自己进行定制。
其中,上面提到了一个 GVM 工具,如果想在同一个系统中安装多个版本,建议可以使用该工具。
在 CentOS-7 中可以通过 yum list all | grep golang 查看、安装,该二进制包在 base 中。
可以从 golang.org/dl 上下载源码包,当然也可以从 golangtc.com 上下载。其中包的名称类似于 go1.6.linux-amd64.tar.gz ,从中选择相应的平台,压缩包中是已经编译好的二进制包,可以直接下载解压即可。
直接下载源码安装,之前的时候需要 gcc 编译,现在基本可以通过 go 搞定了。
go 的 官方页面 之前打不开,可以从 Golang 中国 上下载,不过最近发现好像是放开了。
通常可以在 ~/.bashrc 中设置如下的环境变量,然后通过 source ~/.bashrc 使其立即生效。
如果下载的是只是源码,可以通过 ./all.bash 进行编译,也可以下载包含可执行文件的 tarball 包。
保存如下的内容为 hello.go 文件,然后通过 go run hello.go 执行,此时会输出 Hello World!。
当然可以用更简单的。
另外,在源码目录下,可以直接通过 go build 进行编译,此时将编译该目录下所有的源码,并生成与 目录名称 相同的二进制文件。
当然,也可以在源码目录下执行 go install 进行安装;或者将上述代码放到 $GOPATH/src/examples/hello 目录下,然后执行 go install examples/hello 即可,此时就会编译并安装到 $GOPATH/bin 目录下。
介绍下一些常见的环境变量使用方法,可以通过 go env 查看当前的环境变量。
指定 golang 的安装路径,如果通过 yum 安装,可以使用系统默认的值,此时直接通过 unset GOROOT 取消该环境变量即可。
install 编译存放路径,不允许设置多个路径。可以为空,此时可执行文件会保存到 $GOPATH/bin 目录下。
唯一一个 必须设置 的环境变量,GOPATH 的作用是告诉 Go 命令和其他相关工具,在那里去找到安装在你系统上的 Go 包。这是一个路径的列表,一个典型的 GOPATH 设置如下,类似 PATH 的设置,Windows 下用分号分割。
最后一条,在 Linux/Mac 中把每个 GOPATH下 的 bin 都加入到 PATH 中。
每一个列表中的路径是一个工作区的位置,每个工作区都有源文件、相关包的对象、执行文件。GOPATH 必须设置编译和安装包,即使用标准的 Go 目录树,类似如下:
需要注意的是,GROOT 和 GOPATH 可以设置为不同的路径 。
简单列举一下一些常用的工具。
用于编译,在包的编译过程中,若有必要,会同时编译与之相关联的包。
用来移除当前源码包里面编译生成的文件。
主要是用来帮你格式化所写好的代码文件,只需要简单执行 fmt go test.go 命令,就可以让 go 帮我们格式化我们的代码文件。
其中通过 -w 可以将格式化结果保存到文件中,当然可以使用目录作为参数,格式化整个工程。
用来动态获取远程代码包的,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。
这个命令在内部实际上分成了两步操作:1) 下载源码包;2) 执行 go install。下载源码包的 go 工具会自动根据不同的域名调用不同的源码工具,当然必须确保安装了合适的源码管理工具。
另外,其实 go get 支持自定义域名的功能,具体参见 go help remote 。
该命令在内部实际上分成了两步操作:1) 生成目标文件,可执行文件或者 .a 包;2) 把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin 目录下。
该命令会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件,输出的信息类似:
默认的情况下,不需要任何的参数,它会自动把你源码包下面所有 test 文件测试完毕,当然你也可以带上参数,详情请参考 go help testflag 。
go doc 命令其实就是一个很强大的文档工具。
通过 -http 参数,将会看到一个 golang.org 的本地 copy 版本,通过它你可以查看 pkg 文档等其它内容。设置了GOPATH 后,不但会列出标准包的文档,还会列出你本地 GOPATH 中所有项目的相关文档,这对于经常被限制访问的用户来说是一个不错的选择。
简单以安装 GoLang Colorized Output 包为例。
当然,也可以手动下载源码,放到 $GOPATH/src/github.com/bclicn/color 目录下,然后直接执行 go install 命令。
如果没有下载源码,可能会导致如下的报错。
另外,Github golang/tools 中是一个 golang.org/x/tools 的镜像,可以直接将上述的代码仓库下载下来,然后放到 $GOPATH/golang.org/x/tools 目录下即可。
简单介绍下一些常见的工具。
工程项目保存在 Github moovweb/gvm 中,这是一套使用 Bash 编写的脚本工具,支持多个 go 编译器共存,方便进行切换。
首先,需要安装一些常见的工具,这个是在 scripts/gvm-check 脚本中检查。
如果感兴趣,可以直接查看其源码,其实很简单,只是设置好环境变量即可,接下来看看如何安装,并使用。
默认会直接将上述的代码仓库 Clone 到 ~/.gvm 目录下,并在 ~/.bashrc 中添加一行脚本执行命令,用来设置环境变量。
其中,每个子命令执行的脚本,实际是对应到 script 目录下相应名称的脚本;另外,建议可以直接下载该工具,然后下载相应的 go 版本。
注意,go-1.5 之后的版本,将 C 编译器使用 go 编译器直接替换掉了,这也就意味着,如果你要安装 1.5 之后的版本,需要先安装 1.4 版的才可以。
这也就是说,需要如下两步:1) 用 gcc 编译生成 go-1.4;2) 用 go-1.4 编译大于 go-1.5 的版本。
当然,上述的方式是通过源码安装的,假设,你已经通过 yum 安装好了 go ,那么可以通过如下方式进行编译。实际上就是将 GOROOT_BOOTSTRAP 环境变量设置为安装目录,如下所示。
实际上,安装完之后,相关的数据会保存在如下的目录中 (假设版本为go1.5) 。
简单来说,需要设置环境变量,会保存在 ~/.gvm/environments/ 中,可以用来设置相应的变量;例如,你可以将 GOPATH 设置为自己想放置的目录。
如下统计常用的命令。
源码可以从 Github sparrc/gdm 上下载,其工作原理很简单,可以通过 save 命令会生成 Godeps 文件,保存了相关的包及其版本。
在新的环境中,通过 restore 命令可以下载代码包。
官方网站 golang.org 被墙,常见的工具可以从 Gopm Registry 上下载,而文档资料等可以从 Golang 中国 上查看。
This Site was built by Huang Yongyao, generated with Jekyll, and is hosted on GitHub Pages
©2012-2017 – Huang Yongyao