前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 16.04上从源代码安装Go

如何在Ubuntu 16.04上从源代码安装Go

原创
作者头像
独木桥先生
修改2018-07-25 17:59:06
1.2K0
修改2018-07-25 17:59:06
举报

介绍

Go是由Google开发的一种现代开源编程语言。它很简单,并且拥有一组强大的库和工具,可以轻松搭建可靠,高效的应用程序。

如果您想根据最新版本的语言测试Go应用程序,为Go代码库做贡献,或者有更好的Go版本管理,则需要从源代码搭建Go。本教程将向您展示如何搭建Go,涵盖一些实际考虑因素,以及搭建“Hello,World”测试应用程序。

准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04服务器,已经设置好一个可以使用sudo命令的非root的账户,服务器的内存大于1G。
  • 已安装Git
  • (可选)GitHub帐户。

没有服务器的用户可以购买和使用腾讯云服务器或者直接在腾讯云实验室Ubuntu服务器上机安装Go 。

第1步 - 安装依赖项

在开始之前,更新一下本地的软件包。

代码语言:txt
复制
$ sudo apt-get update

默认情况下,Ubuntu没有提供搭建Go所需的所有软件包,例如编译器,库和工具。通过安装build-essential、包括gcc用于编译C 的包、g++用于编译C ++和make自动化搭建工具,这样可以很容易地安装搭建和编译依赖项。

代码语言:txt
复制
$ sudo apt-get install build-essential

安装完成后,您将拥有从源代码搭建Go所需的所有工具。接下来,您需要Go 1.4二进制文件。

第2步 - 安装Go 1.4.3

建立Go 1.5+要求你拥有Go 1.4。这是因为Go 1.5+的工具链是用Go本身编写的。您可以使用Go 1.4或任何点发布(1.4.1,1.4.2或1.4.3); 在本教程中,我们使用的是Go 1.4.3。

可以在Go的下载页面上找到带有SHA1校验和的二进制文件。将go1.4.3.linux-amd64.tar.gz文件下载到您的主目录。

代码语言:txt
复制
$ cd ~
$ curl -O https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz

虽然此文件是从正版源下载的,但验证已下载内容的完整性仍然是一种良好的安全措施。通过比较下载页面上提供的文件哈希和下载文件的哈希,可以轻松完成此操作。

首先,获取您下载的文件的哈希值。

代码语言:txt
复制
$ sha1sum go1.4.3.linux-amd64.tar.gz

将此命令的输出与Go下载页面上提供的校验和进行比较。

代码语言:txt
复制
332b64236d30a8805fc8dd8b3a269915b4c507fe  go1.4.3.linux-amd64.tar.gz

如果校验和匹配,则可以解压缩文件。

代码语言:txt
复制
$ tar xvf go1.4.3.linux-amd64.tar.gz

x标志代表 eXtract ,v告诉tar使用Verbose输出(即列出提取文件),并f让我们指定Filename。

Go 1.4现在解压缩在一个名为go的目录中,但Go的搭建脚本查找Go 1.4二进制文件,是在~/go1.4文件中查找。我们使用该mv命令重命名目录。

代码语言:txt
复制
$ mv go go1.4

现在,您拥有从源代码搭建Go的必要依赖项。如果要将Go 1.4从主目录移到另一个位置,可以继续下一步。不过不想移动,就可以直接到步骤4,获取Go Source。

第3步 - 重新定位Go 1.4.3(可选)

当Go搭建脚本运行时,它将根据名为GOROOT_BOOTSTRAP的环境变量查找Go 1.4 。如果未设置该变量(默认情况下),则搭建脚本将假定该go1.4目录位于主目录中。如果要将Go 1.4移动到其他位置,可以使用GOROOT_BOOTSTRAP变量。在这里,我们将其移至/usr/local/go1.4

首先,移动目录本身。

代码语言:txt
复制
$ sudo mv go1.4 /usr/local

接下来,您需要通过修改~/.profile文件来设置环境中的路径。

代码语言:txt
复制
$ sudo nano ~/.profile

〜/.profile文件末尾,添加以下行:

代码语言:txt
复制
. . .
export GOROOT_BOOTSTRAP=/usr/local/go1.4

保存文件并退出。要使此更改生效,请刷新您的个人资料。

代码语言:txt
复制
$ source ~/.profile

接下来,您将克隆Go源。

第4步 - 获取Go Sources

存储Go二进制文件的推荐位置是/usr/local。但是,您可以将它存储在您喜欢的任何地方。

进入/usr/local并使用Git克隆存储库。

代码语言:txt
复制
$ cd /usr/local
$ sudo git clone https://go.googlesource.com/go

我们需要git clone使用root权限执行,因为/usr/local它由root拥有的。如果要克隆到用户具有写权限的目录,则可以在不使用sudo的情况下运行此命令。

注意:将Go存储在/usr/local以外的位置将需要您设置GOROOT环境变量。在步骤7中了解更多Go环境变量。

克隆成功完成后,将在/usr/local中创建一个go目录。接着进入该目录。

代码语言:txt
复制
$ cd go

在搭建之前,我们需要选择我们想要的Go版本。

第5步 - 选择Go版本

Go源为每个可用版本提供不同的Git分支。分支机构的名称是:

  • master 用于开发中的最新版本
  • goversion 稳定版本

在这里,我们将使用Go 1.7.4,这意味着我们想要使用go1.7.4分支。

警告:不建议master在生产中使用Go 的开发版本(即分支)。它没有经过测试,可能存在错误。开发版本适用于应用程序测试,但仅使用已发布的版本进行生产。

要更改分支,请使用git checkout命令。您需要root权限才能执行这些命令,因为/usr/local/usr/local/go1.4root才有权限处理。

代码语言:txt
复制
$ sudo git checkout go1.7.4

完成此步骤后,您已下载您喜欢的版本的Go源代码。您已准备好进入本教程的关键部分:搭建Go。

第6步 - 搭建Go

要搭建go,您需要执行src/all.bash,这是源代码附带的bash脚本。该脚本将检查您是否具有所有必需的依赖项,运行一些测试并完成搭建。

执行脚本,但请注意,如果更改了Go 1.4.3二进制文件的位置,则需要添加-E标志(即sudo -E bash ./all.bash)来保留环境变量。

代码语言:txt
复制
$ cd src
$ sudo bash ./all.bash

脚本运行需要一点时间。搭建完成后,您将看到以下输出:

代码语言:txt
复制
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

警告:在某些情况下,由于time测试失败,搭建可能会在Go 1.7上失败。这是一个由BUG导致的结果。

代码语言:txt
复制
Failed test output--- FAIL: TestLoadFixed (0.00s)
    time_test.go:943: Now().In(loc).Zone() = "-01", -3600, want "GMT+1", -3600
FAIL
FAIL    time    2.403s
...
2016/12/09 22:16:40 Failed: exit status 1

这个BUG已在commit c5434f2中修复,因此将其添加到新创建的分支中。

代码语言:txt
复制
$ cd ..
$ sudo git checkout -b go1.7.4-timefix 
$ sudo git cherry-pick c5434f2973a87acff76bac359236e690d632ce95

执行此操作后,您可以再次运行该脚本。(如果移动了Go 1.4.3二进制文件,请不要忘记-E标志。)

代码语言:txt
复制
$ cd src
$ sudo bash ./all.bash

现在搭建了Go,您需要为它设置一些环境变量。

第7步 - 设置Go变量

环境变量是定制Go安装的有效方法。我们将介绍最重要和最有用的内容。

要开始使用Go,您需要将Go二进制路径/usr/local/go/bin添加到PATHGOPATH环境变量中。 GOPATH是存储Go应用程序代码和二进制文件的地方,我们将其指定为〜/ work,当然您可以自由地对其进行自定义。

将这些变量添加到~/.profile文件中。用您喜欢的文本编辑器打开它:

代码语言:txt
复制
$ nano ~/.profile

〜/ .profile文件末尾添加以下行:

代码语言:txt
复制
. . .
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

如果您在非默认路径中安装Go,,比如在/usr/local/go中,我们需要定义GOROOT变量。在这种情况下,还要添在〜/ .profile中添加:

代码语言:txt
复制
export GOROOT=$HOME/go
export GOPATH=$HOME/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存文件并退出。要使这些更改生效,刷新了一下 profile

代码语言:txt
复制
$ source ~/.profile

成功完成此步骤后,您将获得功能齐全的Go。接下来,我们将测试它以确保一切都按预期工作。

第8步 - 测试Go安装

一种常见的测试方法是编写并运行一个简单的“Hello,World”应用程序。

要做到这一点,首先我们将创建并移动到基于GOPATH的应用程序文件目录中。您可以在Go路径中选择任何您喜欢的内容,但是作为这里的示例,我们将设置如果使用GitHub管理代码所需的层次结构。即使没有GitHub帐户,这个层次结构也可以工作。

代码语言:txt
复制
$ mkdir -p $GOPATH/src/github.com/your_github_username/test_project
$ cd $GOPATH/src/github.com/your_github_username/test_project

接下来,创建一个名为“Hello,World”的Go文件。

代码语言:txt
复制
$ nano hello.go

将以下代码添加到hello.go文件中:

代码语言:txt
复制
package main

import "fmt"

func main() {
    fmt.Printf("Hello World!\n")
}

此示例使用fmt包,它实现了Printf()之类的I/O函数,并定义了main()函数,该函数将在程序运行时打印Hello World

保存并退出文件,然后使用Go命令install进行编译。

代码语言:txt
复制
$ go install github.com/your_github_username/test_project

编译完成后,可以使用以下命令运行它:

代码语言:txt
复制
$ hello

你会看到Hello World!打印到终端,这意味着你的Go工作正常。

第9步 - 更改Go版本(可选)

本教程设置了Go 1.7.4。如果要使用其他版本,则需要更改活动的Git分支并重建Go。

要查看当前的Go版本,您可以使用go version

代码语言:txt
复制
$ go version
代码语言:txt
复制
go version go1.7.4 linux/amd64

举个例子,我们将切换到Go版本为1.6.4。此版本位于go1.6.4分支中,因此切换到它。

代码语言:txt
复制
$ cd /usr/local/go
$ sudo git checkout go1.6.4

要确保所有内容都是最新的,请运行git pull以获取所选分支的最新更改。

代码语言:txt
复制
$ sudo git pull origin go1.6.4

现在,像以前一样运行搭建脚本,确保在步骤3中重新定位Go 1.4时添加-E标志。

代码语言:txt
复制
$ cd src
$ sudo bash ./all.bash

这需要一些时间才能完成。搭建完成后,您将看到以下输出:

代码语言:txt
复制
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

您已经~/.profile从步骤5中设置了Go变量,因此您只需更改版本即可。

结论

通过从源代码搭建路径和设置路径,您现在拥有了开发和测试Go应用程序或为Go代码库做贡献的基础,同时腾讯云开发者手册提供Go的中文开发文档,欢迎使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 安装依赖项
  • 第2步 - 安装Go 1.4.3
  • 第3步 - 重新定位Go 1.4.3(可选)
  • 第4步 - 获取Go Sources
  • 第5步 - 选择Go版本
  • 第6步 - 搭建Go
  • 第7步 - 设置Go变量
  • 第8步 - 测试Go安装
  • 第9步 - 更改Go版本(可选)
  • 结论
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档