Debian 上配置 Golang「失败」通常并不是 Go 本身有问题,而是环境、版本或路径配置不对。下面按常见原因和你该如何排查来说明。
Debian 稳定版仓库里的 Go 经常很旧:
go version
# 可能是 go1.11 / go1.15 等
很多现代项目要求 Go 1.19+,老版本会直接编译失败。
✅ 解决:
sudo apt remove golang-go
wget https://go.dev/dl/go1.21.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.linux-amd64.tar.gz
很多人只装了 Go,却没配置环境变量。
检查:
echo $GOROOT
echo $GOPATH
which go
如果 which go 为空,说明 PATH 没加。
✅ 推荐配置(~/.bashrc 或 ~/.zshrc):
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
然后:
source ~/.bashrc
go version
在 Debian 上执行:
go mod tidy
经常卡住或失败,原因是 proxy.golang.org 被墙。
✅ 解决:
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
有些人在 root 下直接跑 go mod,会导致权限和缓存混乱。
✅ 建议:
sudo -u 用户名如果你在 systemd 服务里跑 Go 程序,但提示 go: command not found:
原因是 systemd 不会读取 .bashrc
✅ 解决:
/usr/local/go/bin/goEnvironment=PATH=/usr/local/go/bin:/usr/bin:/bin
请你先执行下面命令,把结果贴出来:
go version
echo $GOROOT
echo $GOPATH
echo $PATH
go env GOPROXY
| 错误信息 | 原因 |
|---|---|
go: command not found |
PATH 没配 |
cannot find package |
GOPATH 错 |
module requires Go >= 1.20 |
版本太老 |
connection timeout |
网络/proxy |
permission denied |
root/权限 |
如果你愿意,可以直接把具体报错信息贴出来,我可以按你的实际情况一步步帮你修。