如何在Ubuntu 18.04上安装Go并设置本地编程环境

Go是一种编程语言,专为快速编译,编程简易和生产中的高效执行而设计。本教程将指导您通过Ubuntu 18.04上的命令行使用Go安装和配置编程工作区。

介绍

Go是一种编程语言,源于Google的挫败感。 开发人员不得不选择一种有效执行的语言,但需要很长时间才能编译,或选择一种易于编程但在生产中运行效率低下的语言。 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 Terminal简介教程。

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

Ubuntu终端

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

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

cd ~

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

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

接下来,使用sha256sum验证tarball:

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

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

2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  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的目录。 接下来,递归地将此目录的所有者和组更改为root

sudo chown -R root:root /usr/local/go

这将保护所有文件并确保只有root用户可以运行Go二进制文件。

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

在此步骤中,您已在Ubuntu 18.04计算机上下载并安装了Go。 在下一步中,您将配置Go工作区。

第2步 - 创建Go工作区

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

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

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

当程序导入第三方库时,您将看到github.comgithub.com目录。 如果您使用的是像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 如果您使用的是Go的早期版本而不是1.8,那么对于您的工作区使用$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

/user/local/go/bin$PATH可以使系统上的所有Go工具都可用。

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

. ~/.profile

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

echo $PATH

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

/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工具的路径:

/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

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

go 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

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

drwxr-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工作区并配置了必要的环境变量。 在下一步中,您将使用一些代码测试工作区。

第3步 - 创建一个简单的程序

现在您已经设置了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! 作为论点。 这将导致短语Hello, World! 在程序运行时打印到终端。

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

退出nano并返回shell后,运行程序:

go run hello.go

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

Hello, World!

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

结论

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