使用 Go 1.18.4 Toolset


Red Hat Developer Tools 1

安装和使用 Go 1.18.4 Toolset

摘要

Go Toolset 是 Red Hat Enterprise Linux (RHEL)操作系统中的开发人员。使用本指南了解 Go Toolset,了解如何调用和使用不同版本的 Go 工具,并使用更深入的信息查找资源。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 Go Toolset

Go Toolset 是 Red Hat Enterprise Linux (RHEL)上的开发人员。它提供 Go 编程语言工具和库。请注意,Go 也称为 golang。

Go Toolset 作为 Red Hat Enterprise Linux 7 的 Red Hat Developer Tools 的一部分发布。Go Toolset 作为 Red Hat Enterprise Linux 8 的模块提供。Go Toolset 作为 Red Hat Enterprise Linux 9 的软件包提供。

1.1. Go Toolset 组件

以下组件作为 Go Toolset 的一部分提供:

Expand
名称版本描述

golang

RHEL 7 — 1.18.4, RHEL 8 — 1.18.4, RHEL 9 — 1.18.4

Go 编译器。

delve

RHEL 7 — 1.8.0, RHEL 8 — 1.8.0, RHEL 9 — 1.8.0

Go 调试器。

1.2. Go Toolset 兼容性

Go Toolset 可用于 Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8 和 Red Hat Enterprise Linux 9:

  • AMD 和 Intel 64 位
  • 64 位 ARM (RHEL 8 和 RHEL 9)
  • IBM Power Systems, Little Endian
  • 64-bit IBM Z

1.3. 在 Red Hat Enterprise Linux 7 上访问 Go Toolset

要在 Red Hat Enterprise Linux 7 上安装 Go Toolset,您必须访问并启用 Red Hat Developer Tools 和 Red Hat Software Collections 软件仓库。
如果这些软件仓库已附加到您的系统,请参阅安装 Go Toolset

流程

  1. 运行以下命令安装 Wget

    # yum install wget
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令下载最新的订阅数据:

    # subscription-manager refresh
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令注册您的系统:

    # subscription-manager register
    Copy to Clipboard Toggle word wrap

    要使用图形用户界面(GUI) 注册您的系统,请按照注册和取消注册系统 指南进行操作。

  4. 运行以下命令,显示所有可用订阅列表并标识池 ID:

    # subscription-manager list --available
    Copy to Clipboard Toggle word wrap
  5. 在以池 ID 开头的行中查找 池 ID
  6. 运行以下命令,附加可让您访问 Red Hat Developer Tools 仓库的订阅:

    # subscription-manager attach --pool=<pool ID from the subscription>
    Copy to Clipboard Toggle word wrap
    • 将 subscription &gt; 中的 & lt; 池 ID 替换为您在上一步中确定的池 ID。
  7. 运行以下命令验证将哪些订阅附加到您的系统中:

    # sudo subscription-manager list --consumed
    Copy to Clipboard Toggle word wrap
  8. 运行以下命令,启用 rhel-7-variant-devtools-rpms 存储库:

    # subscription-manager repos --enable rhel-7-<variant>-devtools-rpms
    Copy to Clipboard Toggle word wrap
    • <variant > 替换为您的 Red Hat Enterprise Linux 系统变体: serverworkstation

      使用 服务器 访问最广泛的开发工具。

  9. 运行以下命令,启用 rhel-变体- rhscl-7-rpms 存储库:

    # subscription-manager repos --enable rhel-<variant>-rhscl-7-rpms
    Copy to Clipboard Toggle word wrap
    • <variant > 替换为您的 Red Hat Enterprise Linux 系统变体: serverworkstation
  10. 运行以下命令,将 Red Hat Developer Tools GPG 密钥添加到您的系统中:

    # cd /etc/pki/rpm-gpg
    # wget -O RPM-GPG-KEY-redhat-devel https://www.redhat.com/security/data/a5787476.txt
    # rpm --import RPM-GPG-KEY-redhat-devel
    Copy to Clipboard Toggle word wrap

1.4. 安装 Go Toolset

完成以下步骤以安装 Go Toolset,包括所有依赖软件包。

先决条件

流程

在 Red Hat Enterprise Linux 7 中,运行以下命令来安装 go-toolset-1.18 集合:

# yum install go-toolset-1.18
Copy to Clipboard Toggle word wrap

在 Red Hat Enterprise Linux 8 中,运行以下命令来安装 go-toolset 模块:

# yum module install go-toolset
Copy to Clipboard Toggle word wrap

在 Red Hat Enterprise Linux 9 中,运行以下命令来安装 go-toolset 软件包:

# dnf install go-toolset
Copy to Clipboard Toggle word wrap

1.5. 安装 Go 文档

您可以在本地系统上为 Go 编程语言安装文档。

先决条件

流程

要安装 golang-docs 软件包,请运行以下命令:

  • 在 Red Hat Enterprise Linux 7 上:

    # yum install go-toolset-1.18-golang-docs
    Copy to Clipboard Toggle word wrap

    您可以在以下路径中找到文档: /opt/rh/go-toolset-1.18/root/usr/lib/go-toolset-1.18-golang/doc/docs.html

  • 在 Red Hat Enterprise Linux 8 中:

    # yum install golang-docs
    Copy to Clipboard Toggle word wrap

    您可以在以下路径中找到文档: /usr/lib/golang/doc/effective_go.html

  • 在 Red Hat Enterprise Linux 9 中:

    # dnf install golang-docs
    Copy to Clipboard Toggle word wrap

    您可以在以下路径中找到文档: /usr/lib/golang/doc/go_spec.html

第 2 章 Go 编译器

Go 编译器是 Go 编程语言的构建工具和依赖项管理器。它为您的代码提供错误检查和优化。

2.1. 先决条件

2.2. 设置 Go 工作区

要编译 Go 程序,您需要设置 Go 工作区。

流程

  1. 创建一个工作区目录,作为 $GOPATH/src 的子目录。

    常见选择是 $HOME/go

  2. 将您的源文件放到工作区目录中。
  3. 运行以下命令,将工作区目录的位置设置为 $HOME/.bashrc 文件:

    $ echo 'export GOPATH=<workspace_dir>' >> $HOME/.bashrc
    $ source $HOME/.bashrc
    Copy to Clipboard Toggle word wrap

    将 <workspace_dir> 替换为工作区目录的名称。

2.3. 编译 Go 程序

您可以使用 Go 编译器编译 Go 程序。Go 编译器因为编译后创建一个可执行的二进制文件。

先决条件

  • 设定的 Go 工作区。
    有关如何设置工作区的详情,请参考 设置 Go 工作区

流程

在项目目录中,运行:

  • 在 Red Hat Enterprise Linux 7 上:

    $ scl enable go-toolset-1.18 'go build <output_file>'
    Copy to Clipboard Toggle word wrap
    • <output_file < 替换为输出文件的所需名称,<go_main_package > 替换为您的主软件包的名称。
  • 在 Red Hat Enterprise Linux 8 中:

    $ go build <output_file>
    Copy to Clipboard Toggle word wrap
    • <output_file > 替换为输出文件的所需名称,<go_main_package > 替换为您的主软件包的名称。
  • 在 Red Hat Enterprise Linux 9 中:

    $ go build <output_file>
    Copy to Clipboard Toggle word wrap
    • <output_file > 替换为输出文件的所需名称,<go_main_package > 替换为您的主软件包的名称。

2.4. 运行一个 Go 程序

Go 编译器因为编译后创建一个可执行的二进制文件。完成以下步骤以执行此文件并运行您的程序。

先决条件

  • 您的程序被编译。
    有关如何编译程序的更多信息,请参阅 编译 Go 程序

流程

要运行您的程序,请在包含可执行文件的目录中运行:

$ ./<file_name>
Copy to Clipboard Toggle word wrap
  • <file_name > 替换为可执行文件的名称。

2.5. 安装编译的 Go 项目

您可以安装已编译的 Go 项目,以便在进一步的 Go 项目中使用其可执行文件和库。安装后,项目的可执行文件和库会根据 Go 工作区中的目录复制到。另外还会安装其依赖项。

先决条件

流程

要安装 Go 项目,请运行:

  • 在 Red Hat Enterprise Linux 7 上:

    $ scl enable go-toolset-1.18 'go install <go_project>'
    Copy to Clipboard Toggle word wrap
    • <go_project > 替换为您要安装的 Go 项目的名称。
  • 在 Red Hat Enterprise Linux 8 中:

    $ go install <go_project>
    Copy to Clipboard Toggle word wrap
    • <go_project > 替换为您要安装的 Go 项目的名称。
  • 在 Red Hat Enterprise Linux 9 中:

    $ go install <go_project>
    Copy to Clipboard Toggle word wrap
    • <go_project > 替换为您要安装的 Go 项目的名称。

2.6. 下载并安装 Go 项目

您可以从在线资源下载并安装第三方 Go 项目,以便在进一步的 Go 项目中使用其可执行文件和库。安装后,项目的可执行文件和库会根据 Go 工作区中的目录复制到。另外还会安装其依赖项。

先决条件

流程

  • 要下载并安装 Go 项目,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'go get <third_party_go_project>'
      Copy to Clipboard Toggle word wrap
      • <third_party_go_project > 替换为您要下载的项目的名称。
    • 在 Red Hat Enterprise Linux 8 中:

      $ go get <third_party_go_project>
      Copy to Clipboard Toggle word wrap
      • <third_party_go_project > 替换为您要下载的项目的名称。
    • 在 Red Hat Enterprise Linux 9 中:

      $ go get <third_party_go_project>
      Copy to Clipboard Toggle word wrap
      • <third_party_go_project > 替换为您要下载的项目的名称。
  • 有关第三方项目的可能值的信息,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'go help importpath'
      Copy to Clipboard Toggle word wrap
    • 在 Red Hat Enterprise Linux 8 中:

      $ go help importpath
      Copy to Clipboard Toggle word wrap
    • 在 Red Hat Enterprise Linux 9 中:

      $ go help importpath
      Copy to Clipboard Toggle word wrap

第 3 章 gofmt 格式工具

Go 编程语言使用 gofmt 代码格式工具,而不是样式的指南。Gofmt 根据 Go 布局规则自动格式化您的代码。

3.1. 先决条件

3.2. 格式化代码

您可以使用 gofmt 格式化工具在给定路径中格式化代码。当路径导致单个文件时,更改只应用于文件。当路径导致某个目录时,将处理目录中的所有 .go 文件。

流程

要在给定路径中格式化您的代码,请运行:

  • 在 Red Hat Enterprise Linux 7 上:

    $ scl enable go-toolset-1.18 'gofmt -w <code_path>'
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要格式的代码的路径。
  • 在 Red Hat Enterprise Linux 8 中:

    $ gofmt -w <code_path>
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要格式的代码的路径。
  • 在 Red Hat Enterprise Linux 9 中:

    $ gofmt -w <code_path>
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要格式的代码的路径。
注意

要将格式化代码打印到标准输出而不是将其写入原始文件,请省略 -w 选项。

3.3. 预览代码更改

您可以使用 gofmt 格式化工具来预览由给定路径中格式化代码所完成的更改。统一 diff 格式的输出将打印到标准输出中。

流程

要显示您在给定路径中的代码的不同,请运行:

  • 在 Red Hat Enterprise Linux 7 上:

    $ scl enable go-toolset-1.18 'gofmt -d <code_path>'
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要比较的代码的路径。
  • 在 Red Hat Enterprise Linux 8 中:

    $ gofmt -d <code_path>
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要比较的代码的路径。
  • 在 Red Hat Enterprise Linux 9 中:

    $ gofmt -d <code_path>
    Copy to Clipboard Toggle word wrap
    • <code_path > 替换为您要比较的代码的路径。

3.4. 简化代码

您可以使用 gofmt 格式化工具来简化代码。

流程

  • 要简化给定路径中的代码,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'gofmt -s <code_path>'
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要简化代码的路径。
    • 在 Red Hat Enterprise Linux 8 中:

      $ gofmt -s <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要简化代码的路径。
    • 在 Red Hat Enterprise Linux 9 中:

      $ gofmt -s <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要简化代码的路径。
  • 要应用这些更改,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'gofmt -w <code_path>'
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。
    • 在 Red Hat Enterprise Linux 8 中:

      $ gofmt -w <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。
    • 在 Red Hat Enterprise Linux 9 中:

      $ gofmt -w <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。

3.5. 重构代码

您可以使用 gofmt 格式工具通过应用任意替换来重构代码。

流程

  • 要在给定路径中重构您的代码,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'gofmt -r <rewrite_rule> <code_path>'
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要重构的代码的路径,将 &lt ;rewrite_rule > 替换为您要重写的规则。
    • 在 Red Hat Enterprise Linux 8 中:

      $ gofmt -r <rewrite_rule> <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要重构的代码的路径,将 &lt ;rewrite_rule > 替换为您要重写的规则。
    • 在 Red Hat Enterprise Linux 9 中:

      $ gofmt -r <rewrite_rule> <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要重构的代码的路径,将 &lt ;rewrite_rule > 替换为您要重写的规则。
  • 要应用这些更改,请运行:

    • 在 Red Hat Enterprise Linux 7 上:

      $ scl enable go-toolset-1.18 'gofmt -w <code_path>'
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。
    • 在 Red Hat Enterprise Linux 8 中:

      $ gofmt -w <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。
    • 在 Red Hat Enterprise Linux 9 中:

      $ gofmt -w <code_path>
      Copy to Clipboard Toggle word wrap
      • <code_path > 替换为您要格式的代码的路径。

第 4 章 Go 竞争条件

Go Toolset 包括 Go race detector,这是用于查找竞争条件的 Go 标准库的工具。
请注意,竞争检测器具有显著的运行时资源开销。

4.1. 先决条件

4.2. 使用 Go 竞争条件

使用 Go 竞争条件检查您的代码。

流程

要使用竞争条件,请运行:

  • 在 Red Hat Enterprise Linux 7 上:

    $ scl enable go-toolset-1.18 'go build -race -o <output_file> <go_main_package>'
    Copy to Clipboard Toggle word wrap
    • <output_file > 替换为可执行文件的名称,< go_main_package > 替换为您要测试的软件包的名称。
  • 在 Red Hat Enterprise Linux 8 中:

    $ go build -race -o <output_file> <go_main_package>
    Copy to Clipboard Toggle word wrap
    • <output_file > 替换为可执行文件的名称,< go_main_package > 替换为您要测试的软件包的名称。
  • 在 Red Hat Enterprise Linux 9 中:

    $ go build -race -o <output_file> <go_main_package>
    Copy to Clipboard Toggle word wrap
    • <output_file > 替换为可执行文件的名称,< go_main_package > 替换为您要测试的软件包的名称。

第 5 章 使用 Go Toolset 的容器镜像

您可以从 Red Hat Enterprise Linux 容器镜像或 Red Hat Universal Base Images (UBI)构建自己的 Go Toolset 容器。

5.1. Red Hat Enterprise Linux Go Toolset 容器镜像内容

Go Toolset 的 Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 8 和 Red Hat Enterprise Linux 9 容器镜像包含以下软件包:

Expand
组件版本软件包

Go

1.18

RHEL 7 — go-toolset-1.18.4 RHEL 8 — go-toolset-1.18.4 RHEL 9 — go-toolset-1.18.4

5.2. 访问 Red Hat Enterprise Linux 容器镜像

在运行容器并执行操作前,从红帽 registry 中拉取容器镜像。

流程

要拉取所需的镜像,请运行:

  • 对于基于 Red Hat Enterprise Linux 7 的镜像:

    # podman pull registry.redhat.io/devtools/go-toolset-rhel7
    Copy to Clipboard Toggle word wrap
  • 对于基于 Red Hat Enterprise Linux 8 的镜像:

    # podman pull registry.redhat.io/rhel8/go-toolset
    Copy to Clipboard Toggle word wrap
  • 对于基于 Red Hat Enterprise Linux 9 的镜像:

    # podman pull registry.redhat.io/rhel9/go-toolset
    Copy to Clipboard Toggle word wrap

5.3. 访问 RHEL 8 上的 UBI Go Toolset 容器镜像

在 RHEL 8 中,安装 UBI Go Toolset 容器镜像来访问 Go Toolset。
另外,您可以在 RHEL 8 基本 UBI 容器镜像中安装 Go Toolset。如需更多信息,请参阅 RHEL 8 上的基础 UBI 容器镜像访问 Go Toolset

流程

要从 Red Hat registry 中拉取 UBI Go Toolset 容器镜像,请运行:

# podman pull registry.access.redhat.com/ubi8/go-toolset
Copy to Clipboard Toggle word wrap

5.4. 从 RHEL 8 的基本 UBI 容器镜像访问 Go Toolset

在 RHEL 8 中,Go Toolset 软件包是 Red Hat Universal Base Images (UBI)存储库的一部分,这意味着您可以将 Go Toolset 作为基础 UBI 容器镜像的补充。要将容器镜像大小保持小,请只安装独立的软件包,而不是整个 Go Toolset。
或者,您可以安装 UBI Go Toolset 容器镜像来访问 Go Toolset。如需更多信息,请参阅在 RHEL 8 上访问 UBI Go Toolset 容器镜像

先决条件

  • 一个现有的 Containerfile。
    有关创建 Containerfiles 的详情,请参考 Dockerfile 参考 页面。

流程

  • 要创建包含 Go Toolset 的容器镜像,请在 Containerfile 中添加以下行:
FROM registry.access.redhat.com/ubi8/ubi:latest

RUN yum module install -y go-toolset
Copy to Clipboard Toggle word wrap
  • 要创建仅包含单个软件包的容器镜像,请在 Containerfile 中添加以下行:

    RUN yum install -y <package-name>
    Copy to Clipboard Toggle word wrap
    • 将 < package-name > 替换为您要安装的软件包的名称。

您可以使用 Go Toolset 容器镜像作为 Red Hat Enterprise Linux 7 上的 Source-to-Image (S2I)构建器镜像。

流程

  1. IMPORT_URL 变量设置为指定代码位置的 URL。
  2. 要构建 S2I 构建器镜像,请运行 s2i build 命令。
注意

如果主软件包位置与 IMPORT_URL 变量指定的位置不同,请将 INSTALL_URL 变量设置为 URL,用于指定构建时提供应用程序主可执行文件的软件包位置。

第 6 章 Go Toolset 中的更改

Go Toolset 已从 RHEL 7、RHEL 8 和 RHEL 9 上的 1.17 版本更新至 1.18.4。

主要变更包括:

  • 在保持与之前版本的 Go 的向后兼容性的同时引入一般性。
  • 新的 fuzzing 库。
  • 新的 debug/buildinfonet/netip 软件包。
  • go get 工具不再构建或安装软件包。现在,它只会处理 go.mod 中的依赖项。
  • 如果主模块的 go.mod 文件指定了 go 1.17 或更高版本,则在没有指定任何参数的情况下运行 go mod download 命令只会下载主模块的 go.mod 文件中明确需要的模块的源代码。要下载用于传输依赖项的源代码,请使用 go mod download all 命令。
  • go mod vendor 子命令现在支持 -o 选项来设置输出目录。
  • go mod tidy 命令现在为需要其源代码的模块保留额外校验和的 go.sum 文件中,以验证构建列表中只有一个模块提供每个导入的软件包。这个更改不适用于主模块的 go.mod 文件中的 Go 版本。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat