一步步教你在 Ubuntu 安装 Go – wiki基地


终极指南:在 Ubuntu 系统上一步步安装 Go 语言开发环境

Go 语言(通常称为 Golang)是由 Google 开发的一种开源编程语言,以其简洁、高效、强大的并发处理能力以及出色的工具链而闻名。它被广泛应用于后端服务、微服务、网络工具、命令行应用、云计算等领域。对于希望在 Linux 环境下,特别是流行的 Ubuntu 发行版上进行 Go 开发的开发者来说,正确安装和配置 Go 环境是至关重要的第一步。

本指南将为您提供一个极其详尽的、手把手的教程,涵盖在 Ubuntu 系统上安装 Go 的多种方法,并深入探讨相关的配置、验证和基础使用,确保您即使是 Linux 或 Go 的新手也能顺利完成安装,并为后续的开发工作打下坚实的基础。本文预计篇幅较长,旨在覆盖所有必要的细节。

一、 前期准备:了解基础知识与系统要求

在开始安装之前,我们需要确保满足一些基本条件,并了解一些背景信息。

  1. 拥有一台运行 Ubuntu 的计算机: 本指南适用于 Ubuntu 桌面版或服务器版。您可以通过虚拟机、物理机或云服务器来运行 Ubuntu。确保您的 Ubuntu 系统是最新或受支持的版本(如 Ubuntu 20.04 LTS, 22.04 LTS 等)。
  2. 终端访问权限: 大部分的安装和配置操作都需要在命令行终端(Terminal)中完成。您可以通过桌面环境的应用菜单找到它,或者使用快捷键 Ctrl+Alt+T 打开。
  3. Sudo 权限: 安装软件到系统目录(如 /usr/local)或使用 apt 包管理器通常需要管理员权限。确保您当前登录的用户拥有 sudo 权限。
  4. 网络连接: 下载 Go 安装包或使用包管理器都需要稳定的网络连接。
  5. 了解 Go 版本: Go 语言迭代迅速。建议安装官方推荐的最新稳定版本。您可以访问 Go 官方下载页面(https://go.dev/dl/)查看最新的可用版本。记下您想要安装的版本号(例如 1.21.5)。
  6. 选择安装方式: 主要有两种推荐的安装方式:
    • 通过官方二进制包安装(推荐): 这是最灵活、最能确保获取最新版本的方法。您可以完全控制安装位置和版本。本指南将重点详细介绍此方法。
    • 通过 Ubuntu 的 apt 包管理器安装: 这是最简单快捷的方法,但 apt 仓库中的 Go 版本通常不是最新的。适用于对版本要求不高的快速设置场景。我们也会涵盖此方法。

二、 方法一:通过官方二进制包安装 Go(推荐,最详尽)

这是获取最新 Go 版本并进行精细控制的最佳方式。我们将逐步完成下载、验证、解压、配置环境变量等所有步骤。

步骤 1:检查是否已安装旧版本 Go(可选但推荐)

在安装新版本之前,检查系统上是否已存在 Go。打开终端,输入:

bash
go version

如果输出了版本信息(例如 go version go1.18 linux/amd64),说明已安装 Go。如果您希望安装一个新版本或者进行全新安装,建议先卸载旧版本。卸载方法取决于之前的安装方式:
* 如果是通过 apt 安装的,使用 sudo apt purge golang-go
* 如果是通过二进制包安装的,通常需要手动删除安装目录(如 /usr/local/go)并清理相关的环境变量配置。

如果命令返回 “command not found” 或类似错误,说明系统中没有(或者 PATH 环境变量未正确设置)Go,您可以继续下一步。

步骤 2:下载 Go 官方二进制包

  1. 访问 Go 官网下载页面: 打开浏览器,访问 https://go.dev/dl/
  2. 选择合适的版本和架构:
    • 在页面上找到您想要安装的最新稳定版本。
    • 确定您的系统架构。在大多数现代 64 位 Ubuntu 系统上,架构是 amd64(也称为 x86-64)。您可以通过在终端运行 dpkg --print-architectureuname -m 来确认(x86_64 对应 amd64)。如果是 ARM 架构(如树莓派或某些云服务器),则选择 arm64
    • 找到对应 “Linux” 平台的 .tar.gz 归档文件。例如,对于 Go 1.21.5 和 amd64 架构,文件名可能是 go1.21.5.linux-amd64.tar.gz
  3. 复制下载链接: 右键点击对应的 .tar.gz 文件链接,选择“复制链接地址”。
  4. 在终端中使用 wgetcurl 下载:
    • 打开终端。建议先切换到您希望存放下载文件的目录,例如 Downloads 目录:
      bash
      cd ~/Downloads
    • 使用 wget 下载(将下方链接替换为您复制的实际链接):
      bash
      wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
    • 或者,如果您更喜欢 curl
      bash
      curl -LO https://go.dev/dl/go1.21.5.linux-amd64.tar.gz

      (-L 用于跟随重定向,-O 用于将输出保存到与远程文件名相同的文件)。

步骤 3:验证下载文件的完整性(重要!)

为了确保下载的文件没有损坏或被篡改,务必进行校验和(Checksum)验证。

  1. 获取官方校验和: 在 Go 下载页面,您下载的文件旁边会提供一个 SHA256 Checksum 值。复制这个值。
  2. 在终端计算本地文件的校验和: 确保您仍在包含下载文件的目录(例如 ~/Downloads)。运行以下命令(将文件名替换为您下载的实际文件名):
    bash
    sha256sum go1.21.5.linux-amd64.tar.gz
  3. 比较校验和: 命令会输出一个长字符串和一个文件名。将这个字符串与您从官网复制的 SHA256 值进行仔细比对。两者必须完全一致!如果不一致,请删除下载的文件并重新下载。

步骤 4:解压 Go 压缩包到安装目录

Go 官方推荐将 Go 安装在 /usr/local/go 目录下。这需要 sudo 权限。

  1. 使用 tar 命令解压: 在终端中,运行以下命令(同样,替换为您下载的实际文件名):
    bash
    sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

    • sudo: 以管理员权限执行。
    • tar: 用于处理归档文件的命令。
    • -C /usr/local: 指定解压的目标目录为 /usr/localtar 会在此目录下创建一个名为 go 的子目录。
    • -x: 表示提取(Extract)。
    • -z: 表示通过 gzip 处理 .gz 压缩文件。
    • -f go1.21.5.linux-amd64.tar.gz: 指定要处理的归档文件名。

    执行此命令后,Go 的所有文件将被解压到 /usr/local/go 目录下。您可以运行 ls /usr/local 确认 go 目录是否存在。

步骤 5:配置环境变量(核心步骤)

为了让系统能够找到 Go 的可执行文件(如 go, godoc, gofmt)并管理 Go 项目,需要设置几个重要的环境变量。这些变量通常添加到您的 shell 配置文件中,以便每次登录时自动加载。

常用的 shell 配置文件包括:
* ~/.bashrc: 如果您使用 Bash shell(Ubuntu 默认),并且希望每次打开新的交互式终端时都加载这些变量。
* ~/.profile: 通常在用户登录时(图形界面登录或 TTY 登录)读取一次。将环境变量放在这里更符合规范,特别是对于非交互式脚本也可能需要这些变量的情况。
* ~/.zshrc: 如果您使用 Zsh shell。

推荐将环境变量添加到 ~/.profile 文件中。

  1. 打开配置文件: 使用文本编辑器(如 nano, vim, gedit)打开 ~/.profile 文件。这里以 nano 为例:
    bash
    nano ~/.profile

  2. 添加环境变量定义: 在文件的末尾添加以下几行:

    “`bash

    Go lang environment variables

    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    “`

    对这些变量的详细解释:
    * export GOROOT=/usr/local/go:
    * GOROOT 指向 Go 的安装目录。Go 工具链需要知道在哪里找到它的标准库和编译器等核心文件。注意: 在 Go 1.8 及更高版本中,如果 Go 安装在默认位置 /usr/local/go,理论上可以不显式设置 GOROOT,Go 会自动检测。但为了清晰和兼容性,显式设置仍然是一个好习惯。
    * export GOPATH=$HOME/go:
    * GOPATH 是您的 Go 工作区(Workspace)的根目录。在 Go Modules(Go 1.11+ 引入,Go 1.13+ 默认启用)成为主流之前,GOPATH 至关重要,所有项目代码和依赖都必须放在 GOPATH 下的特定目录结构(src, pkg, bin)中。
    * 在现代 Go 开发(使用 Go Modules)中,GOPATH 的作用已大大减弱。 您的项目可以放在文件系统中的任何位置。然而,GOPATH 仍然有其用途:
    * 通过 go install 安装的第三方二进制工具默认会放在 $GOPATH/bin 目录下。
    * 一些旧项目或工具可能仍然依赖 GOPATH
    * 这里我们将 GOPATH 设置为用户主目录下的 go 文件夹($HOME/go)。这是一个常见的约定。即使主要使用 Go Modules,设置一个 GOPATH 也是有益的。
    * 您可以选择其他路径作为 GOPATH,只需确保该目录存在且您有读写权限。
    * export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:
    * PATH 是一个系统环境变量,它包含了一系列目录路径。当您在终端输入一个命令时,系统会按顺序在这些路径中查找对应的可执行文件。
    * $PATH:: 保留现有的 PATH 设置。
    * $GOROOT/bin: 将 Go 安装目录下的 bin 子目录(包含了 go, gofmt 等核心命令)添加到 PATH 中。这样您就可以在任何地方直接运行 go 命令了。
    * $GOPATH/bin: 将 Go 工作区下的 bin 子目录添加到 PATH 中。这样,您通过 go install 安装的工具(例如 go install golang.org/x/tools/cmd/godoc@latest)也可以直接在终端运行。

  3. 保存并关闭文件:

    • nano 编辑器中,按 Ctrl+X,然后按 Y 确认保存,最后按 Enter 确认文件名。
  4. 使环境变量生效:

    • 您刚刚修改的 .profile 文件只在下次登录时才会自动加载。要让当前终端会话立即识别这些新的环境变量,需要手动加载它:
      bash
      source ~/.profile
    • 注意: source ~/.profile 只对当前终端窗口有效。为了让所有新打开的终端都能识别,您需要注销当前用户会话并重新登录,或者重启计算机。这是确保环境变量全局生效的最可靠方法。

步骤 6:验证 Go 安装和环境配置

现在,是时候验证一切是否设置正确了。

  1. 验证 Go 版本: 打开一个新的终端窗口(确保环境变量已加载,或者重新登录后打开),运行:
    bash
    go version

    如果安装成功,应该输出类似 go version go1.21.5 linux/amd64 的信息,显示您安装的版本号。

  2. 检查 Go 环境配置: 运行:
    bash
    go env

    这条命令会列出所有 Go 相关的环境变量及其当前值。请特别检查以下几项:

    • GOROOT: 应显示 /usr/local/go(或您设置的值)。
    • GOPATH: 应显示 $HOME/go(或您设置的值)。
    • GOBIN: 如果没有显式设置,它通常为空或指向 $GOPATH/bin
    • GOEXE: 在 Linux 上通常为空。
    • GOHOSTARCH: 应显示您的 CPU 架构(如 amd64)。
    • GOHOSTOS: 应显示 linux
    • GOPROXY: 默认是 https://proxy.golang.org,direct,用于 Go Modules 下载依赖。
    • GOMODCACHE: Go Modules 缓存的位置,通常在 $GOPATH/pkg/mod

    如果这些值看起来都符合预期,那么您的 Go 环境基本配置好了。

步骤 7:创建 Go 工作区目录(如果设置了 GOPATH)

如果您按照上述步骤设置了 GOPATH=$HOME/go,建议创建这个目录以及其下的 bin 子目录:

bash
mkdir -p $HOME/go/bin

* mkdir -p: 创建目录,如果父目录不存在也会一并创建,且如果目录已存在不会报错。

这个 $HOME/go/bin 目录就是未来通过 go install 安装的工具的存放位置。由于我们已将其添加到了 PATH,这些工具安装后即可直接使用。

至此,使用官方二进制包安装 Go 的过程就完成了! 您已经拥有了一个最新、配置正确的 Go 开发环境。

三、 方法二:通过 Ubuntu 的 apt 包管理器安装 Go

这种方法非常简单,但可能无法获得最新的 Go 版本。

步骤 1:更新软件包列表

在安装任何新软件之前,最好先更新系统的软件包列表:

bash
sudo apt update

步骤 2:安装 Go 包

Ubuntu 的默认仓库中通常包含一个名为 golang-go 的包。执行以下命令安装:

bash
sudo apt install golang-go

系统会提示您确认安装以及所需的依赖,输入 Y 并按 Enter 继续。

步骤 3:验证安装

安装完成后,验证 Go 版本:

bash
go version

您会看到输出的版本信息。请注意,这个版本可能落后于官网的最新稳定版。

使用 apt 安装的优缺点:

  • 优点:
    • 极其简单,一条命令搞定。
    • 由系统包管理器管理,更新和卸载方便(使用 sudo apt update && sudo apt upgrade 更新,使用 sudo apt remove golang-gosudo apt purge golang-go 卸载)。
  • 缺点:
    • 版本滞后: 这是最大的缺点。apt 仓库中的 Go 版本更新通常比官方发布慢很多。如果您需要使用最新 Go 版本的特性或修复,apt 可能不适合。
    • 安装位置不同: apt 安装的 Go 通常位于 /usr/lib/go 或类似路径,而不是 /usr/local/go
    • 可能缺少 GOPATH 配置: apt 安装后,您可能仍需要手动配置 GOPATH 环境变量(尽管对于现代 Go Modules 开发不是强制性的,但为了安装工具仍然推荐设置)。GOROOT 通常会被系统自动处理好。您仍然需要将 $GOPATH/bin 添加到 PATH

对于严肃的 Go 开发,强烈推荐使用方法一(官方二进制包)。 apt 方法更适合快速体验或对版本无特殊要求的场景。

四、 编写并运行您的第一个 Go 程序(”Hello, World!”)

无论您使用哪种方法安装了 Go,现在都可以编写一个简单的程序来测试环境。

步骤 1:创建项目目录

使用 Go Modules,您可以将项目放在任何地方。让我们在主目录下创建一个 hello-go 项目:

bash
cd ~
mkdir hello-go
cd hello-go

步骤 2:初始化 Go Module

在项目根目录 (hello-go) 下,运行 go mod init 命令来创建一个 go.mod 文件。这个文件用于跟踪项目的依赖。将 example.com/hello 替换为您自己的模块路径(通常是类似代码托管平台路径的格式,但对于本地简单项目,这样写也行):

bash
go mod init example.com/hello

这会生成一个 go.mod 文件,内容类似:

“`
module example.com/hello

go 1.21 // 这里会是你安装的 Go 版本
“`

步骤 3:创建 Go 源文件

使用文本编辑器创建一个名为 hello.go 的文件:

bash
nano hello.go

在编辑器中输入以下代码:

“`go
package main

import “fmt”

func main() {
fmt.Println(“Hello, World!”)
}
``
*
package main: 声明这个文件属于main包。一个可执行程序必须有一个main包,并且包含一个main函数。
*
import “fmt”: 导入标准库中的fmt包,该包提供了格式化输入输出的功能(例如打印到控制台)。
*
func main(): 定义程序的入口点——main函数。程序从这里开始执行。
*
fmt.Println(“Hello, World!”): 调用fmt包的Println` 函数,打印字符串 “Hello, World!” 到标准输出,并自动换行。

保存并关闭文件(Ctrl+X, Y, Enter in nano)。

步骤 4:运行 Go 程序

有两种主要方式运行这个程序:

  1. 使用 go run 这个命令会编译并直接运行指定的 Go 源文件,不会在当前目录留下可执行文件。
    bash
    go run hello.go

    您应该会在终端看到输出:
    Hello, World!

  2. 使用 go build 编译,然后执行: 这个命令会编译源代码,并在当前目录下生成一个与项目(或文件)同名的可执行文件(在 Linux 上没有 .exe 后缀)。

    • 编译:
      bash
      go build

      或者指定源文件:go build hello.go。这会在 hello-go 目录下生成一个名为 hello(基于模块名或目录名)或 hello-go 的可执行文件。
    • 执行生成的文件:
      bash
      ./hello

      (如果生成的文件名是 hello-go,则运行 ./hello-go)。您同样会看到 “Hello, World!” 的输出。

恭喜!您已经在 Ubuntu 上成功安装了 Go,并运行了您的第一个 Go 程序。

五、 卸载 Go

如果您需要卸载 Go:

  • 对于通过官方二进制包安装的 Go:

    1. 删除安装目录:
      bash
      sudo rm -rf /usr/local/go
    2. 清理环境变量: 编辑您之前修改的 shell 配置文件(如 ~/.profile),删除添加的 GOROOT, GOPATH, PATH 相关行。
    3. 删除 Go 工作区(可选): 如果您不再需要,可以删除 GOPATH 指向的目录(例如 $HOME/go):
      bash
      rm -rf $HOME/go
    4. 使更改生效: 注销并重新登录,或重启计算机。
  • 对于通过 apt 安装的 Go:

    1. 使用 apt 卸载: 推荐使用 purge 以删除配置文件:
      bash
      sudo apt purge golang-go
      sudo apt autoremove // 清理不再需要的依赖
    2. 检查并清理环境变量(如果手动配置过): 检查 ~/.profile 或其他配置文件,移除可能手动添加的 GOPATHPATH 相关条目。
    3. 删除 Go 工作区(可选): 同上。
    4. 使更改生效: 注销并重新登录,或重启计算机。

六、 进阶话题与后续步骤

  1. Go Modules 深入: 现代 Go 开发的核心是 Go Modules。学习如何管理依赖 (go get, go mod tidy)、版本控制等。
  2. 编辑器/IDE 配置: 为您的文本编辑器(如 VS Code, Vim, Emacs)或 IDE(如 GoLand)安装 Go 插件,以获得语法高亮、代码补全、调试等强大功能。VS Code 的官方 Go 插件 (golang.go) 非常流行且功能完善。
  3. 学习 Go 语法和标准库: 通过官方文档(https://go.dev/doc/)、《A Tour of Go》(https://go.dev/tour/)或相关书籍、教程系统学习 Go 语言。
  4. 了解 Go 工具链: 熟悉 go fmt (格式化代码), go vet (静态检查), go test (单元测试), go build (编译), go install (编译并安装) 等常用命令。
  5. 探索 Go 生态: 了解流行的 Go Web 框架(如 Gin, Echo)、ORM(如 GORM)、以及各种库和工具。

七、 常见问题与故障排除

  • go: command not found
    • 最常见的原因是 PATH 环境变量没有正确设置或未生效。
    • 检查: 运行 echo $PATH,确认 /usr/local/go/bin(或 apt 安装的 Go 的 bin 目录)和 $GOPATH/bin 是否在输出的路径列表中。
    • 解决:
      • 确保您已将 export PATH=... 正确添加到配置文件(如 ~/.profile)。
      • 确保您已运行 source ~/.profile 或已注销并重新登录。
      • 检查路径拼写是否无误。
      • 确认 Go 是否真的安装在 /usr/local/go(对于二进制包安装)。
  • 权限问题(Permission denied):
    • 如果在解压到 /usr/local/go 时遇到权限问题,请确保使用了 sudo
    • 如果在创建 GOPATH 目录(如 $HOME/go)或在其中写入文件时遇到问题,检查该目录及其父目录的权限 (ls -ld $HOME/go)。通常主目录下的文件操作不需要 sudo
  • 下载缓慢或失败:
    • 检查网络连接。
    • 对于中国大陆用户,访问 Go 官网或下载 Go Modules 依赖可能较慢。可以考虑配置 Go 代理 (GOPROXY),例如使用 goproxy.cn
      bash
      go env -w GOPROXY=https://goproxy.cn,direct

      将这个命令添加到您的 .profile 中,或者直接运行(-w 会将其写入 Go 的环境配置文件)。

八、 总结

在 Ubuntu 上安装 Go 语言开发环境是一个直接的过程,尤其推荐使用官方二进制包进行安装,这能让您获得最新的 Go 版本并拥有完全的控制权。关键步骤包括下载、验证、解压,以及最重要的——正确配置 GOROOT(可选但推荐)、GOPATH(仍有用途)和 PATH 环境变量。通过 apt 安装则更为便捷,但通常伴随着版本滞后的问题。

完成安装和配置后,通过编写并运行一个简单的 “Hello, World!” 程序来验证环境是否工作正常。随着您对 Go 的深入,熟悉 Go Modules 的使用、配置好您的开发工具、并不断学习 Go 的语法特性和标准库将是您接下来要探索的方向。

希望这篇详尽的指南能帮助您在 Ubuntu 上顺利开启您的 Go 语言开发之旅!祝您编码愉快!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部