导读:本期聚焦于小伙伴创作的《如何在Ubuntu上从源码安装Go语言?对比主流安装方式怎么选》,敬请观看详情。把Go官方预编译包解压到/usr/local就能用,但有些场景必须自己编译源码:比如要开启定制编译参数、适配非标准架构,或追踪最新未发布特性。源码安装先装gcc和git,从GitHub拉取go仓库切到目标版本,执行src/all.bash完成引导编译,再把bin目录写进PATH。和apt仓库的旧版本、官方压缩包比,源码装最灵活也最慢。下面拆开讲清每种方式的操作、适用边界与常见坑,帮你按机器环境和需求挑最省事的一条路。

在Ubuntu环境中部署Go语言开发工具链,常见做法有三类:使用系统apt包管理器安装、下载官方预编译压缩包、以及从源代码自行编译。不同方式在版本新鲜度、可控性、操作成本上差异明显,其中源码编译虽然步骤最多,却是在特定需求下唯一可行的方案。

如何在Ubuntu上从源码安装Go语言?对比主流安装方式怎么选

一、从源代码安装Go的完整流程

源码安装指的是获取Go语言自身的编译器与标准库源代码,利用系统已有的基础编译环境(如gcc)把Go工具链构建出来。这种方式不依赖发行版维护者打包,能精确到某一个commit或版本标签,也允许在编译前修改构建标签来调整运行时行为。

开始前需确认Ubuntu已安装编译所需依赖。Go从1.5之后实现了自举,也就是用Go写Go编译器,因此首次构建需要有一个可用的Bootstrap编译器,官方推荐用gcc提供的gccgo或者先装一个旧版Go作为引导。最省事的组合是先用apt装一个基础版Go,再拿它编译新版源码。

# 更新软件源并安装编译依赖
sudo apt update
sudo apt install -y git gcc make golang-go

# 拉取Go源码仓库,切换到目标版本(以go1.21.5为例)
cd /usr/local
sudo git clone https://go.googlesource.com/go goroot-src
cd goroot-src
sudo git checkout go1.21.5

# 执行官方构建脚本,编译并跑基础测试
cd src
sudo ./all.bash

上述命令中,all.bash会先构建bootstrap工具,再编译完整go命令、gofmt以及标准库,最后执行自带的测试套件。整个过程在普通云主机上可能耗时十分钟以上。完成后编译产物位于/usr/local/goroot-src/bin,需要将该路径加入环境变量。

为了使go命令全局可用,可在/etc/profile.d/下新建脚本:

# 创建环境配置文件
sudo tee /etc/profile.d/go.sh < 'EOF'
export GOROOT=/usr/local/goroot-src
export PATH=$GOROOT/bin:$PATH
EOF

# 立即生效
source /etc/profile.d/go.sh
go version

源码安装的优势在于版本完全自选,且能修改src目录中的构建约束。但缺点同样突出:编译时间长、磁盘占用大、后续升级需重新 checkout 与编译。若仅仅是开发业务程序,通常没必要走这条路。

二、官方预编译包安装方式

绝大多数Ubuntu用户更适合直接下载Go官网提供的tar.gz压缩包。该包内已包含完备的bin、src、pkg目录,解压即用的本质是把别人编译好的工具链放到本地。

操作上只需用wget获取对应amd64或arm64架构的包,校验后解压到/usr/local。相比源码编译,它省去了几十分钟的构建过程,也避免了gcc版本不一致导致的编译错误。

# 下载并解压官方包(以amd64为例)
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

# 配置PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
go version

这种方法的局限是版本跟随官网发布节奏,不能提前用未发布的特性;同时如果Ubuntu是冷门架构,可能找不到对应预编译包,那时才需回头用源码编译。

三、使用apt仓库安装

Ubuntu自身软件源里也带有golang-go包,一条apt install golang-go就能装。但发行版为了稳定性,版本往往落后官网半年甚至更久。

对于只跑别人写好的Go程序、不关心语言新特性的运维场景,apt最方便,还能随系统升级一起更新。但如果你要用泛型或近期才加入的标准库,就得放弃apt。

# 通过apt安装
sudo apt update
sudo apt install -y golang-go

# 查看版本(通常较旧)
go version

apt方式的另一个问题是不同Ubuntu版本源内Go版本跨度大,团队协作时容易出现本地版本不一致。因此它适合临时试用,不适合作为正式开发环境。

四、三种方式对比与选择建议

为直观比较,下面列出核心维度差异:

安装方式版本新鲜度操作复杂度编译耗时适用场景
apt安装极低临时运行、教学演示
官方压缩包绝大多数开发环境
源码编译最高定制编译、未发布特性、特殊架构

选择时先问自己:是否需要昨晚刚合并的commit?是否要改编译器默认行为?机器是否缺少预编译包?若答案都是否,直接下官方包。若只是跑服务,apt足矣。源码安装应当作为最后手段,而非默认习惯。

此外无论哪种方式,装完后都建议设置GOPATH与Go Modules代理,例如配置GOPROXY指向公共镜像,能显著提升依赖拉取速度,这部分与安装渠道无关,是通用的环境调优动作。

UbuntuGo源码安装Go安装方法修改时间:2026-08-09 09:54:42

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。