0、准备工作

现在是2017年6月底,我用MacBook Air试着源码安装Go,参考文档是 https://golang.org/doc/install/source。

1、下载源码

准备好一个干净的目录,检出源代码。官方文档步骤如下:

$ git clone https://go.googlesource.com/go
$ cd go
$ git checkout go1.8.3

我执行时,检出分支时出错,远程不存在go1.8.3这个分支。

$ git branch
* master
$ git checkout go1.8.3
Note: checking out 'go1.8.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b 

HEAD is now at 352996a381... [release-branch.go1.8] go1.8.3
$ git branch
* (HEAD detached at go1.8.3)
  master
$ git branch -a
* (HEAD detached at go1.8.3)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev.cc
  remotes/origin/dev.garbage
  remotes/origin/dev.gcfe
  remotes/origin/dev.inline
  remotes/origin/dev.power64
  remotes/origin/dev.ssa
  remotes/origin/dev.tls
  remotes/origin/dev.typealias
  remotes/origin/master
  remotes/origin/release-branch.go1
  remotes/origin/release-branch.go1.1
  remotes/origin/release-branch.go1.2
  remotes/origin/release-branch.go1.3
  remotes/origin/release-branch.go1.4
  remotes/origin/release-branch.go1.5
  remotes/origin/release-branch.go1.6
  remotes/origin/release-branch.go1.7
  remotes/origin/release-branch.go1.8
  remotes/origin/release-branch.r57
  remotes/origin/release-branch.r58
  remotes/origin/release-branch.r59
  remotes/origin/release-branch.r60

事实上go1.8.3是个tag,不是branch:

$ git tag -l | grep 1.8
go1.8
go1.8.1
go1.8.2
go1.8.3
go1.8beta1
go1.8beta2
go1.8rc1
go1.8rc2
go1.8rc3

从tag检出:

$ git checkout -b go1.8.3 go1.8.3
Switched to a new branch 'go1.8.3'
$ git branch
* go1.8.3
  master
$ ls
AUTHORS     CONTRIBUTORS    PATENTS     VERSION     doc     lib     robots.txt  test
CONTRIBUTING.md LICENSE     README.md   api     favicon.ico misc        src
$ cat VERSION 
go1.8.3

检出1.8.3成功,继续执行后续安装步骤。

2、安装

官方文档步骤只需要两步:

$ cd src
$ ./all.bash

我执行后报错,缺少Go bootstrap tool(忘记了Go已经完成了自举,需要安装Go1.4编译器了。):

$ ./all.bash 
##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /Users/xingyongtao/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

关于这个问题,官方文档是这么说的:

To build a bootstrap tool chain from source, use either the git branch release-branch.go1.4 or go1.4-bootstrap-20170531.tar.gz, which contains the Go 1.4 source code plus accumulated fixes to keep the tools running on newer operating systems. (Go 1.4 was the last distribution in which the tool chain was written in C.) After unpacking the Go 1.4 source, cd to the src subdirectory and run make.bash (or, on Windows, make.bat).

所以我只需要在本地把go1.4分支检出来,安装就行。

$ git checkout release-branch.go1.4
Branch release-branch.go1.4 set up to track remote branch release-branch.go1.4 from origin.
Switched to a new branch 'release-branch.go1.4'
$ git branch
  go1.8.3
  master
* release-branch.go1.4

安装比较顺利,安装完设置环境变量GOROOT_BOOTSTRAP。
(期间因报错拷贝过一份go目录,使go1.4和GOROOT不为同一个目录。)

重新执行./all.bash安装1.8.3,报重复声明的错误,是切换branch重复编译导致的。清理后重试即可:

git clean -xf

安装完成,验证通过,大功告成。

文章来源于互联网,如有雷同请联系站长删除:Mac上安装Go的一次记录

发表评论