应安装 golang 包而非 golang-bin;dnf install golang 后无需设 goroot,path 需含 /usr/bin,go env goroot 应输出 /usr/lib/golang;升级 go 需升级系统版本,降级不推荐;goproxy 等配置需手动设置。

用 dnf 装 Go,别装错包名
Fedora 官方仓库里有两个名字相近的 Go 相关包:golang 和 golang-bin。前者是完整开发环境(含 go 命令、标准库源码、文档等),后者只是预编译的二进制,不带 GOROOT/src,也不支持 go install 或本地构建工具链。绝大多数人该装 golang。
- 运行
sudo dnf install golang即可,不用加--enablerepo(Fedora 默认启用fedora仓库) - 装完后验证:运行
go version,输出应类似go version go1.22.5 linux/amd64 - 别手动下载 tar.gz 再解压——
dnf管理的版本会自动更新、校验签名、清理旧版,手动装容易和系统其他 Go 工具冲突
GOROOT 不用设,但 PATH 得检查
Fedora 的 golang 包把 go 二进制放在 /usr/lib/golang/bin/go,并用符号链接映射到 /usr/bin/go。这意味着 GOROOT 由 go 自动推导(指向 /usr/lib/golang),你不需要、也不应该手动设置 GOROOT。
- 检查
PATH是否包含/usr/bin(几乎所有 Fedora 用户默认都有);如果没生效,重启 shell 或运行source /etc/profile - 运行
which go,确认输出是/usr/bin/go;如果是/home/xxx/go/bin/go这类路径,说明你之前手动装过,得先清理$HOME/go并删掉相关PATH追加 - 执行
go env GOROOT,输出应为/usr/lib/golang;如果不是,大概率是环境变量干扰了
升级和降级 Go 版本要小心
Fedora 的 golang 包版本和系统发行版强绑定:F39 默认带 Go 1.21,F40 带 Go 1.22。想换版本不能靠 dnf upgrade golang 跨大版本跳,因为仓库不会同时提供多个主版本。
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
- 升级系统(如
sudo dnf system-upgrade to f40)才会自然升级 Go - 需要旧版 Go?只能临时用
go install golang.org/dl/go1.20@latest下载对应go工具链,再用go1.20 download;别卸载系统golang包,否则可能破坏依赖它的其他软件(比如podman构建部分功能) -
dnf downgrade golang在多数情况下不可行——旧版包早被仓库清理了,强行指定 RPM 文件易引发依赖断裂
Go module 代理和私有仓库配置不受 dnf 影响
dnf 只管安装 go 二进制和标准库,不碰任何用户级配置。所以 GOPROXY、GOSUMDB、git 凭据这些,全得你自己设。
- 国内用户建议在
~/.bashrc或~/.zshrc加上:export GOPROXY=https://proxy.golang.org,direct(或换成七牛云镜像) - 私有模块仓库需额外配
git config --global url."https://your-git.example.com/".insteadOf "https://github.com/",和dnf无关 - 别指望
dnf自动帮你开go mod缓存目录——第一次go build才会生成$GOPATH/pkg/mod,权限出问题时看ls -ld $GOPATH是否属于当前用户
最常被忽略的是:Fedora 的 golang 包不修改你的 shell 配置,所有环境变量都得自己加;很多人装完以为“能用了”,结果 go mod 报找不到 proxy 或 checksum 失败,其实是环境没配全。









