终极指南:在 Ubuntu 系统上一步步安装 Go 语言开发环境
Go 语言(通常称为 Golang)是由 Google 开发的一种开源编程语言,以其简洁、高效、强大的并发处理能力以及出色的工具链而闻名。它被广泛应用于后端服务、微服务、网络工具、命令行应用、云计算等领域。对于希望在 Linux 环境下,特别是流行的 Ubuntu 发行版上进行 Go 开发的开发者来说,正确安装和配置 Go 环境是至关重要的第一步。
本指南将为您提供一个极其详尽的、手把手的教程,涵盖在 Ubuntu 系统上安装 Go 的多种方法,并深入探讨相关的配置、验证和基础使用,确保您即使是 Linux 或 Go 的新手也能顺利完成安装,并为后续的开发工作打下坚实的基础。本文预计篇幅较长,旨在覆盖所有必要的细节。
一、 前期准备:了解基础知识与系统要求
在开始安装之前,我们需要确保满足一些基本条件,并了解一些背景信息。
- 拥有一台运行 Ubuntu 的计算机: 本指南适用于 Ubuntu 桌面版或服务器版。您可以通过虚拟机、物理机或云服务器来运行 Ubuntu。确保您的 Ubuntu 系统是最新或受支持的版本(如 Ubuntu 20.04 LTS, 22.04 LTS 等)。
- 终端访问权限: 大部分的安装和配置操作都需要在命令行终端(Terminal)中完成。您可以通过桌面环境的应用菜单找到它,或者使用快捷键
Ctrl+Alt+T
打开。 - Sudo 权限: 安装软件到系统目录(如
/usr/local
)或使用apt
包管理器通常需要管理员权限。确保您当前登录的用户拥有sudo
权限。 - 网络连接: 下载 Go 安装包或使用包管理器都需要稳定的网络连接。
- 了解 Go 版本: Go 语言迭代迅速。建议安装官方推荐的最新稳定版本。您可以访问 Go 官方下载页面(https://go.dev/dl/)查看最新的可用版本。记下您想要安装的版本号(例如
1.21.5
)。 - 选择安装方式: 主要有两种推荐的安装方式:
- 通过官方二进制包安装(推荐): 这是最灵活、最能确保获取最新版本的方法。您可以完全控制安装位置和版本。本指南将重点详细介绍此方法。
- 通过 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 官方二进制包
- 访问 Go 官网下载页面: 打开浏览器,访问 https://go.dev/dl/。
- 选择合适的版本和架构:
- 在页面上找到您想要安装的最新稳定版本。
- 确定您的系统架构。在大多数现代 64 位 Ubuntu 系统上,架构是
amd64
(也称为x86-64
)。您可以通过在终端运行dpkg --print-architecture
或uname -m
来确认(x86_64
对应amd64
)。如果是 ARM 架构(如树莓派或某些云服务器),则选择arm64
。 - 找到对应 “Linux” 平台的
.tar.gz
归档文件。例如,对于 Go 1.21.5 和 amd64 架构,文件名可能是go1.21.5.linux-amd64.tar.gz
。
- 复制下载链接: 右键点击对应的
.tar.gz
文件链接,选择“复制链接地址”。 - 在终端中使用
wget
或curl
下载:- 打开终端。建议先切换到您希望存放下载文件的目录,例如
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)验证。
- 获取官方校验和: 在 Go 下载页面,您下载的文件旁边会提供一个 SHA256 Checksum 值。复制这个值。
- 在终端计算本地文件的校验和: 确保您仍在包含下载文件的目录(例如
~/Downloads
)。运行以下命令(将文件名替换为您下载的实际文件名):
bash
sha256sum go1.21.5.linux-amd64.tar.gz - 比较校验和: 命令会输出一个长字符串和一个文件名。将这个字符串与您从官网复制的 SHA256 值进行仔细比对。两者必须完全一致!如果不一致,请删除下载的文件并重新下载。
步骤 4:解压 Go 压缩包到安装目录
Go 官方推荐将 Go 安装在 /usr/local/go
目录下。这需要 sudo
权限。
-
使用
tar
命令解压: 在终端中,运行以下命令(同样,替换为您下载的实际文件名):
bash
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gzsudo
: 以管理员权限执行。tar
: 用于处理归档文件的命令。-C /usr/local
: 指定解压的目标目录为/usr/local
。tar
会在此目录下创建一个名为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
文件中。
-
打开配置文件: 使用文本编辑器(如
nano
,vim
,gedit
)打开~/.profile
文件。这里以nano
为例:
bash
nano ~/.profile -
添加环境变量定义: 在文件的末尾添加以下几行:
“`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
)也可以直接在终端运行。 -
保存并关闭文件:
- 在
nano
编辑器中,按Ctrl+X
,然后按Y
确认保存,最后按Enter
确认文件名。
- 在
-
使环境变量生效:
- 您刚刚修改的
.profile
文件只在下次登录时才会自动加载。要让当前终端会话立即识别这些新的环境变量,需要手动加载它:
bash
source ~/.profile - 注意:
source ~/.profile
只对当前终端窗口有效。为了让所有新打开的终端都能识别,您需要注销当前用户会话并重新登录,或者重启计算机。这是确保环境变量全局生效的最可靠方法。
- 您刚刚修改的
步骤 6:验证 Go 安装和环境配置
现在,是时候验证一切是否设置正确了。
-
验证 Go 版本: 打开一个新的终端窗口(确保环境变量已加载,或者重新登录后打开),运行:
bash
go version
如果安装成功,应该输出类似go version go1.21.5 linux/amd64
的信息,显示您安装的版本号。 -
检查 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-go
或sudo 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 程序
有两种主要方式运行这个程序:
-
使用
go run
: 这个命令会编译并直接运行指定的 Go 源文件,不会在当前目录留下可执行文件。
bash
go run hello.go
您应该会在终端看到输出:
Hello, World!
-
使用
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:
- 删除安装目录:
bash
sudo rm -rf /usr/local/go - 清理环境变量: 编辑您之前修改的 shell 配置文件(如
~/.profile
),删除添加的GOROOT
,GOPATH
,PATH
相关行。 - 删除 Go 工作区(可选): 如果您不再需要,可以删除
GOPATH
指向的目录(例如$HOME/go
):
bash
rm -rf $HOME/go - 使更改生效: 注销并重新登录,或重启计算机。
- 删除安装目录:
-
对于通过
apt
安装的 Go:- 使用
apt
卸载: 推荐使用purge
以删除配置文件:
bash
sudo apt purge golang-go
sudo apt autoremove // 清理不再需要的依赖 - 检查并清理环境变量(如果手动配置过): 检查
~/.profile
或其他配置文件,移除可能手动添加的GOPATH
和PATH
相关条目。 - 删除 Go 工作区(可选): 同上。
- 使更改生效: 注销并重新登录,或重启计算机。
- 使用
六、 进阶话题与后续步骤
- Go Modules 深入: 现代 Go 开发的核心是 Go Modules。学习如何管理依赖 (
go get
,go mod tidy
)、版本控制等。 - 编辑器/IDE 配置: 为您的文本编辑器(如 VS Code, Vim, Emacs)或 IDE(如 GoLand)安装 Go 插件,以获得语法高亮、代码补全、调试等强大功能。VS Code 的官方 Go 插件 (
golang.go
) 非常流行且功能完善。 - 学习 Go 语法和标准库: 通过官方文档(https://go.dev/doc/)、《A Tour of Go》(https://go.dev/tour/)或相关书籍、教程系统学习 Go 语言。
- 了解 Go 工具链: 熟悉
go fmt
(格式化代码),go vet
(静态检查),go test
(单元测试),go build
(编译),go install
(编译并安装) 等常用命令。 - 探索 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 语言开发之旅!祝您编码愉快!