如何在Ubuntu18.04上安装Go并设置本地编程环境

来自菜鸟教程
跳转至:导航、​搜索

Status: Deprecated

This article is deprecated and no longer maintained.

Reason

We are now versioning and updating our Go install documentation separately for each Linux distribution release.

See Instead

This article may still be useful as a reference, but may not work or follow best practices. We strongly recommend using a recent article written for the operating system you are using.


介绍

Go 是一种在谷歌受挫后诞生的编程语言。 开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。

虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。 它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。

本教程将指导您通过命令行使用 Go 安装和配置编程工作区。 本教程将明确介绍 Ubuntu 18.04 的安装过程,但一般原则可以适用于其他 Debian Linux 发行版。

先决条件

您将需要一台安装了 Ubuntu 18.04 的计算机或虚拟机,以及对该计算机的管理访问权限和 Internet 连接。 您可以通过 Ubuntu 18.04 发布页面 下载此操作系统。

第 1 步 — 设置 Go

在这一步中,您将通过从 官方 Go 下载页面 下载当前版本来安装 Go。

为此,您需要找到当前二进制版本 tarball 的 URL。 您还需要注意它旁边列出的 SHA256 哈希,因为您将使用此哈希来 验证下载的文件

您将在命令行上完成安装和设置,这是一种与计算机交互的非图形方式。 也就是说,您将输入文本并通过文本从计算机接收反馈,而不是单击按钮。

命令行,也称为shell终端,可以帮助您修改和自动化您每天在计算机上执行的许多任务,是软件开发人员必不可少的工具. 有许多终端命令需要学习,可以让你做更强大的事情。 有关命令行的更多信息,请查看 Linux 终端简介 教程。

在 Ubuntu 18.04 上,您可以通过单击屏幕左上角的 Ubuntu 图标并在搜索栏中输入 terminal 来找到终端应用程序。 单击终端应用程序图标将其打开。 或者,您可以同时按下键盘上的 CTRLALTT 键以自动打开终端应用程序。

终端打开后,您将手动安装 Go 二进制文件。 虽然您可以使用包管理器,例如 apt-get,但逐步完成手动安装步骤将帮助您了解拥有有效 Go 工作区所需的系统配置更改。

在下载 Go 之前,请确保您在 home (~) 目录中:

cd ~

使用 curl 检索您从官方 Go 下载页面复制的 tarball URL:

curl -LO https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz

接下来,使用 sha256sum 来验证 tarball:

sha256sum go1.12.1.linux-amd64.tar.gz

运行上述命令显示的哈希值应与下载页面上的哈希值相匹配。 如果没有,那么这不是一个有效的文件,您应该重新下载该文件。

Output2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  go1.12.1.linux-amd64.tar.gz

接下来,解压缩下载的存档并将其安装到系统上的所需位置。 将其保留在 /usr/local 下被认为是最佳实践:

sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local

您现在将在 /usr/local 目录中有一个名为 go 的目录。

注意:虽然/usr/local/go是官方推荐的位置,但有些用户可能更喜欢或需要不同的路径。


在这一步中,您在 Ubuntu 18.04 机器上下载并安装了 Go。 在下一步中,您将配置 Go 工作区。

第 2 步 — 创建您的 Go 工作区

安装 Go 后,您可以创建编程工作区。 Go 工作区将在其根目录包含两个目录:

  • src:包含 Go 源文件的目录。 源文件是您使用 Go 编程语言编写的文件。 Go 编译器使用源文件来创建可执行的二进制文件。
  • bin:包含由 Go 工具构建和安装的可执行文件的目录。 可执行文件是在您的系统上运行并执行任务的二进制文件。 这些通常是由您的源代码或其他下载的 Go 源代码编译的程序。

src 子目录可能包含多个版本控制存储库(例如 GitMercurialBazaar)。 这允许在您的项目中规范地导入代码。 Canonical 导入是引用完全限定包的导入,例如 github.com/digitalocean/godo

当您的程序导入第三方库时,您将看到类似 github.comgolang.org 或其他目录。 如果您使用像 github.com 这样的代码存储库,您还将把项目和源文件放在该目录下。 我们将在此步骤的后面部分探讨这个概念。

以下是典型工作区的外观:

.
├── bin
│   ├── buffalo                                      # command executable
│   ├── dlv                                          # command executable
│   └── packr                                        # command executable
└── src
    └── github.com
        └── digitalocean
            └── godo
                ├── .git                            # Git repository metadata
                ├── account.go                      # package source
                ├── account_test.go                 # test source
                ├── ...
                ├── timestamp.go
                ├── timestamp_test.go
                └── util
                    ├── droplet.go
                    └── droplet_test.go

从 1.8 开始,Go 工作区的默认目录是用户的主目录,其中包含 go 子目录或 $HOME/go。 如果您使用的是早于 1.8 的 Go 版本,仍然认为最佳做法是为您的工作区使用 $HOME/go 位置。

发出以下命令为 Go 工作区创建目录结构:

mkdir -p $HOME/go/{bin,src}

-p 选项告诉 mkdir 在目录中创建所有 parents,即使它们当前不存在。 使用 {bin,src}mkdir 创建一组参数,并告诉它创建 bin 目录和 src 目录。

这将确保以下目录结构现在到位:

└── $HOME
    └── go
        ├── bin
        └── src

在 Go 1.8 之前,需要设置一个名为 $GOPATH 的本地环境变量。 $GOPATH 告诉编译器在哪里可以找到导入的第三方源代码,以及您编写的任何本地源代码。 虽然不再明确要求它,但它仍然被认为是一种很好的做法,因为许多第三方工具仍然依赖于设置的这个变量。

您可以通过将全局变量添加到 ~/.profile 来设置 $GOPATH。 您可能希望根据您的 shell 配置将其添加到 .zshrc.bashrc 文件中。

首先,使用 nano 或您喜欢的文本编辑器打开 ~/.profile

nano ~/.profile

通过将以下内容添加到文件中来设置您的 $GOPATH

~/.profile

export GOPATH=$HOME/go

Go 编译安装工具时,会将它们放在 $GOPATH/bin 目录下。 为方便起见,通常将工作区的 /bin 子目录添加到 ~/.profile 中的 PATH

~/.profile

export PATH=$PATH:$GOPATH/bin

这将允许您在系统上的任何位置运行通过 Go 工具编译或下载的任何程序。

最后,您需要将 go 二进制文件添加到您的 PATH。 您可以通过在行尾添加 /usr/local/go/bin 来做到这一点:

~/.profile

export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

/usr/local/go/bin 添加到 $PATH 使所有 Go 工具都可以在系统上的任何位置使用。

要更新您的 shell,请发出以下命令以加载全局变量:

. ~/.profile

您可以通过使用 echo 命令并检查输出来验证您的 $PATH 是否已更新:

echo $PATH

您将看到您的 $GOPATH/bin 将显示在您的主目录中。 如果您以 root 身份登录,您将在路径中看到 /root/go/bin

Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

您还将看到 /usr/local/go/bin 的 Go 工具的路径:

Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

通过检查 Go 的当前版本来验证安装:

go version

我们应该收到这样的输出:

Outputgo version go1.12.1 linux/amd64

现在您已经创建了工作空间的根目录并设置了 $GOPATH 环境变量,您可以使用以下目录结构创建未来的项目。 此示例假设您使用 github.com 作为存储库:

$GOPATH/src/github.com/username/project

例如,如果您正在处理 https://github.com/digitalocean/godo 项目,它将存储在以下目录中:

$GOPATH/src/github.com/digitalocean/godo

此项目结构将使项目可与 go get 工具一起使用。 它也将有助于以后的可读性。 您可以使用 go get 命令验证这一点并获取 godo 库:

go get github.com/digitalocean/godo

这将下载 godo 库的内容并在您的机器上创建 $GOPATH/src/github.com/digitalocean/godo 目录。

您可以通过列出目录来检查它是否成功下载了 godo 包:

ll $GOPATH/src/github.com/digitalocean/godo

您应该会看到与此类似的输出:

Outputdrwxr-xr-x 4 root root  4096 Apr  5 00:43 ./
drwxr-xr-x 3 root root  4096 Apr  5 00:43 ../
drwxr-xr-x 8 root root  4096 Apr  5 00:43 .git/
-rwxr-xr-x 1 root root     8 Apr  5 00:43 .gitignore*
-rw-r--r-- 1 root root    61 Apr  5 00:43 .travis.yml
-rw-r--r-- 1 root root  2808 Apr  5 00:43 CHANGELOG.md
-rw-r--r-- 1 root root  1851 Apr  5 00:43 CONTRIBUTING.md
.
.
.
-rw-r--r-- 1 root root  4893 Apr  5 00:43 vpcs.go
-rw-r--r-- 1 root root  4091 Apr  5 00:43 vpcs_test.go

在此步骤中,您创建了一个 Go 工作区并配置了必要的环境变量。 在下一步中,您将使用一些代码测试工作区。

第三步——创建一个简单的程序

现在您已经设置了 Go 工作区,创建一个“Hello, World!” 程序。 这将确保正确配置工作区,并让您有机会更加熟悉 Go。 因为我们正在创建单个 Go 源文件,而不是实际项目,所以我们不需要在工作区中执行此操作。

在您的主目录中,打开一个命令行文本编辑器,例如 nano,然后创建一个新文件:

nano hello.go

在新文件中编写程序:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

此代码将使用 fmt 包并以 Hello, World! 作为参数调用 Println 函数。 当程序运行时,这将导致短语 Hello, World! 打印到终端。

CTRLX 键退出 nano。 当提示保存文件时,按 Y,然后按 ENTER

一旦你退出 nano 并返回你的 shell,运行程序:

go run hello.go

hello.go 程序将导致终端产生以下输出:

OutputHello, World!

在此步骤中,您使用了一个基本程序来验证您的 Go 工作区是否已正确配置。

结论

恭喜! 至此,您已经在 Ubuntu 机器上设置了 Go 编程工作区,可以开始编码项目了!