给机子配置 Go 环境

三葉Leaves Author

我的操作系统:
Debian GNU/Linux 12 (bookworm)
我的目标环境:
Go 1.22.0

写这篇教程是因为我部署项目的时候遇到了一个与 toolchain 有关的报错,这个指令是在Go 1.21版本之后引入的,而我的版本来自于 APT 仓库,太老(APT仓库上面的玩意总是更新的很慢),所以更新之。

下载并安装 Go

下载

1
curl -O -L https://go.dev/dl/go1.22.0.linux-amd64.tar.gz

安装

1
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

更新环境变量

1
echo 'export PATH=/usr/local/go/bin:$PATH export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN' >> ~/.bashrc

添加进系统级变量,如此一来所有人都能用

1
echo 'export PATH=/usr/local/go/bin:$PATH' >> /etc/profile

使这些更改生效:

1
source ~/.bashrc && source /etc/profile && go version

配置代理

由于众所周知的 GFW (长城防火墙)的原因,大概率机子上 go 下载包下不动,那就需要配置代理.
配置 Go 的模块代理:

1
go env -w GOPROXY=https://goproxy.cn,direct

配置 GOSUMDB 使用国内源:

1
go env -w GOSUMDB=sum.golang.google.cn

检验环境变量,看看有没有配置成功:

1
go env | grep -E "GOPROXY|GOSUMDB"

关闭"尝试保持 toolchain 最新" 机制

问题

尽管我已经安装了 go1.22.0 ,但是由于现在最新的 go 是 go 1.22.9 ,在GOTOOLCHAIN 自动下载机制下,我在后端文件夹内运行 go 命令的时候,会自动触发下载:

1
2
root@lavm-66av3x9gok:/www/wwwroot/MyPapers/server# go version
go: downloading go1.22.9 (linux/amd64)

而又由于某些 GFW 等知名原因,网络很容易出问题:

1
2
root@lavm-66av3x9gok:/www/wwwroot/MyPapers/server# go run main.go 
go: downloading go1.22.9 (linux/amd64) go: download go1.22.9: golang.org/toolchain@v0.0.1-go1.22.9.linux-amd64: verifying module: golang.org/toolchain@v0.0.1-go1.22.9.linux-amd64: Get "https://sum.golang.google.cn/lookup/golang.org/toolchain@v0.0.1-go1.22.9.linux-amd64": dial tcp 220.181.174.34:443: i/o timeout

解决方案

我们强制使用本地的 go 版本即可:

1
2
echo 'export GOTOOLCHAIN=local' >> ~/.bashrc
source ~/.bashrc
  • 标题: 给机子配置 Go 环境
  • 作者: 三葉Leaves
  • 创建于 : 2025-04-18 00:00:00
  • 更新于 : 2025-05-13 23:50:35
  • 链接: https://blog.oksanye.com/b3e449482d99/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论