在Fedora上安装Go环境_dnf包管理器使用

1次阅读

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

在Fedora上安装Go环境_dnf包管理器使用

dnf 装 Go,别装错包名

Fedora 官方仓库里有两个名字相近的 Go 相关包:golanggolang-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。这意味着 GOROOTgo 自动推导(指向 /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 跨大版本跳,因为仓库不会同时提供多个主版本。

  • 升级系统(如 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 二进制和标准库,不碰任何用户级配置。所以 GOPROXYGOSUMDBgit 凭据这些,全得你自己设。

  • 国内用户建议在 ~/.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 失败,其实是环境没配全。

text=ZqhQzanResources