跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    在 Fedora 上安装 Go:1.27 与国内模块代理

    Terminal window
    sudo dnf install golang
    go version
    go version go1.27.1-X:nodwarf5 linux/amd64

    X:nodwarf5 是 Fedora 的构建标记(去掉 DWARF 调试信息以减小体积),功能与上游 1.27.1 一致。

    Go 二进制、GOROOT 与模块缓存(GOMODCACHE)的位置关系

    Terminal window
    go env GOPATH GOMODCACHE GOPROXY
    • GOPATH:工作区,默认 ~/go
    • GOMODCACHE:模块缓存,默认 ~/go/pkg/mod
    • GOPROXY:模块代理,默认 https://proxy.golang.org,direct

    国内直连 proxy.golang.org 经常超时,换掉它:

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

    direct 是兜底:代理没有的模块直接拉源码。验证:

    Terminal window
    go env GOPROXY
    https://goproxy.cn,direct

    go env -w 写的是 ~/.config/go/env,不是 shell 变量,重开终端也保留。

    Terminal window
    mkdir -p ~/hello && cd ~/hello
    go mod init example.com/hello
    cat > main.go <<'EOF'
    package main
    import "fmt"
    func main() {
    fmt.Println("hello from Go")
    }
    EOF
    go run main.go
    hello from Go

    编译成二进制:

    Terminal window
    go build -o hello .
    ./hello
    Terminal window
    go install golang.org/x/tools/cmd/goimports@latest

    装到 $GOPATH/bin(即 ~/go/bin)。这个目录默认不在 PATH 里:

    Terminal window
    echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
    source ~/.bashrc
    goimports -h 2>&1 | head -2
    场景选择
    学习、跑现成项目、CI 构建dnf install golang 就够,升级跟 Fedora 走
    要固定小版本(1.26.3 这种)上游 tarball 或 go install golang.org/dl/go1.26.3@latest
    多版本并存上游 tarball 解到不同目录,用 PATH 切

    装上游版本:

    Terminal window
    cd /usr/local
    sudo curl -LO https://go.dev/dl/go1.27.1.linux-amd64.tar.gz
    sudo tar xzf go1.27.1.linux-amd64.tar.gz
    export PATH=/usr/local/go/bin:$PATH
    go version
    现象原因
    go: cannot find main module没在模块目录里,先 go mod init
    拉模块一直卡住GOPROXY 还是官方地址,换 goproxy.cn
    go install 后命令找不到~/go/bin 不在 PATH
    编译报 permission denied在 /usr 下构建,换到家目录
    与仓库版冲突两个 go 同时在 PATH,which -a go 查