温馨提示×

ubuntu系统如何更新golang版本

小樊
35
2025-11-22 22:47:40
栏目: 编程语言

Ubuntu 更新 Golang 的常用方法

一 方法速览与选择

  • 使用 apt 包管理器:命令简洁、系统集成度高,但仓库版本通常较旧,适合追求稳定与省心的场景。
  • 手动安装官方二进制包:可获取最新稳定版,路径可控,适合需要新特性或自定义安装位置的用户。
  • 使用版本管理工具(如 gvm):便于多版本共存与快速切换,适合多项目、多版本的开发与测试环境。
    以上三种方式均为常见且可行的路径,可按你的需求选择其一执行。

二 方法一 使用 apt 更新

  • 更新索引并安装/升级:
    sudo apt update
    sudo apt install golang-go
  • 验证:
    go version
  • 说明:若系统仓库中的版本偏旧,可参考下一节进行手动安装或改用版本管理工具。

三 方法二 手动安装官方二进制包

    1. 查看当前版本与架构:
      go version
      uname -m # 常见为 x86_64(对应 linux-amd64)
    1. 卸载旧版(如曾用二进制安装到 /usr/local/go):
      sudo rm -rf /usr/local/go
    1. 下载并解压(请替换为最新版本号):
      wget https://golang.google.cn/dl/go1.23.5.linux-amd64.tar.gz
      sudo tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz
    1. 配置环境变量(写入 ~/.profile 或 ~/.bashrc 或 /etc/profile,二选一或都写):
      echo ‘export PATH=$PATH:/usr/local/go/bin’ >> ~/.profile
      echo ‘export GOPATH=$HOME/go’ >> ~/.profile
      echo ‘export PATH=$PATH:$GOPATH/bin’ >> ~/.profile
      source ~/.profile
    1. 验证:
      go version
      go env
  • 提示:国内访问官方站点较慢时,可使用 https://golang.google.cn/dl/ 镜像链接。

四 方法三 使用 GVM 进行多版本管理

    1. 安装依赖并安装 gvm:
      sudo apt update && sudo apt install -y curl git mercurial make binutils bison gcc build-essential
      bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
      source ~/.gvm/scripts/gvm
    1. 常用命令:
      gvm listall # 查看可安装版本
      gvm install go1.25.0 -B # 安装指定版本(-B 使用二进制包,更快)
      gvm list # 查看已安装版本
      gvm use go1.25.0 --default # 切换为默认版本
      go version
    1. 建议的环境变量(写入 ~/.bashrc 或 ~/.zshrc):
      export GO111MODULE=on
      export GOPROXY=https://goproxy.cn,direct
  • 说明:gvm 适合需要在不同项目间快速切换 Go 版本的开发者。

五 常见问题与排查

  • 命令未找到或仍是旧版本:检查 PATH 是否包含 /usr/local/go/bin(或 gvm 切换是否生效),执行 source 重载配置后重试。
  • 多版本冲突:若曾用 apt 与手动安装并存,建议统一为一种方式;手动安装用户可移除旧版目录(如 sudo rm -rf /usr/local/go)后再验证。
  • 国内下载慢:使用 golang.google.cn/dl/ 镜像链接;设置 GOPROXY 提升模块下载速度(如 GOPROXY=https://goproxy.cn,direct)。
  • 验证要点:依次执行 go version、go env,确认版本号与 GOROOT、GOPATH 等变量是否符合预期。

0