Mac上安装Go的一次记录

ytxing · · 1187 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 <new-branch-name>

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

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:ytxing

查看原文:Mac上安装Go的一次记录

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1187 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传