说“Debian 配 Golang 难”,其实通常不是 Golang 本身难,而是 Debian 的包装哲学和 Go 的版本/依赖模型不太合拍。下面把常见痛点拆开说。
Debian 稳定版(如 Debian 12 bookworm)出于稳定性优先原则,仓库里的 golang-go 通常是:
结果:
go version
# go1.19 (Debian)
然后编译现代项目直接失败。
✅ 解决方式(常见):
gvm / asdf但这对“只想 apt install”的用户来说就是不爽点。
Debian 把 Go 拆成:
golang-go(编译器)golang-srcgolang-docgolang-xxx-dev新手经常:
apt install golang
结果发现:
GOPATH 环境go mod 里而 Go 官方模式是:
一个压缩包,全搞定
老 Debian 教程还在用:
export GOPATH=/usr/share/gocode
但 Go 1.16+ 已经是:
go mod init
新手容易:
Go 用到 CGO 时(如 sqlite、crypto):
import "C"
Debian 需要:
apt install gcc libc-dev
但有时还缺:
pkg-config-dev 包报错像:
cannot find -lsqlite3
这不算 Go 难,是 Debian 开发环境不“开箱即用”。
Debian 默认:
/usr/local 需要 sudo新手常踩:
go install xxx@latest
# 写到 ~/go/bin,但 PATH 没加
官方方式(推荐):
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
比 Debian 包更可控。
Debian 配 Golang “难”,难在“系统包管理”和“Go 官方模型”的冲突,而不是 Golang 本身难。
如果你愿意,我可以:
你现在是卡在哪一步?