🦘

Ubuntu 24.04からはGoの環境構築は`apt install golang`でいい

に公開

Go Toolchainsについて

Go 1.21からは Go Toolchains が導入されGoのバージョン管理を行う必要がなくなりました。
Go Toolchainsを簡単に説明すると、プロジェクトで指定されているGoのバージョンが手元のバージョンよりも新しい場合に指定されているバージョンを自動でインストールしてくれる機能のことです。

これまでは、UbuntuのパッケージマネージャーであるAptでインストールできるGoのバージョンが最新バージョンよりもいくつか古かったことから、最新バージョンを得るには公式から手動でインストールしたり(これが一番確実でいいんですが多少面倒くさい)PPAを使ってインストールしたり、goenvやasdfでバージョン管理をするのが一般的でした。

Ubuntu 24.04ではAptでインストールできるGoのバージョンが1.22となっています。
これも現在の最新である1.23に比べると古いのですが、Go Toolchainsが搭載されている今、もう何も怖くありません。
つまり、curlvimのようにGoもsudo apt install golangだけでGoの環境が揃ってしまうのです。

検証

DockerのUbuntuイメージで検証します。
/app/go.modでGo 1.23.0を指定します。
なお、apt install golangだけで環境構築ができると書きましたが、go.devからバイナリをインストールするのにCA証明書が必要なのでca-certificatesも一緒にインストールします。

/app/go.mod
module playground

go 1.23.0

Ubuntu 22.04 (以前)

$ docker run -it ubuntu:22.04 bash

root@9e59b594fe3d:/# apt update
root@9e59b594fe3d:/# apt install -y golang ca-certificates

root@9e59b594fe3d:/# go version
go version go1.18.1 linux/amd64

root@9e59b594fe3d:/# mkdir /app
root@9e59b594fe3d:/# cd /app
root@9e59b594fe3d:/app# echo "module playground
go 1.23.0" > /app/go.mod

root@9e59b594fe3d:/app# go version
go version go1.18.1 linux/amd64

Aptでインストールした古いGoが/appでも使われています。

Ubuntu 24.04 (以降)

$ docker run -it ubuntu:24.04 bash

root@89c21fc27ed0:/# apt update
root@89c21fc27ed0:/# apt install -y golang ca-certificates

root@89c21fc27ed0:/# go version
go version go1.22.2 linux/amd64

root@89c21fc27ed0:/# mkdir /app
root@89c21fc27ed0:/# cd /app
root@89c21fc27ed0:/app# echo "module playground
go 1.23.0" > /app/go.mod

root@89c21fc27ed0:/app# go version
go: downloading go1.23.0 (linux/amd64)
go version go1.23.0 linux/amd64

go.modが存在する/appディレクトリに移動してgoコマンドを実行すると、新しいバージョンのGoが自動でインストールされていることが分かります。

(おまけ) 24.04未満のときはPPAを使うスクリプト

# /etc/os-releaseにはUbuntuのバージョンが記載されている
source /etc/os-release
# bcコマンドは文字列を数式として評価する
if [[ $(echo "$VERSION_ID < 24.04" | bc) = 1 ]]; then
  sudo apt-add-repository -y ppa:longsleep/golang-backports
  sudo apt-get update
fi
sudo apt-get install -y golang

まとめ

  • Go 1.21からはGoのバージョン管理が不要になった
  • Ubuntu 24.04からはAptでGo1.22が入る
  • つまりAptだけでGoの管理が万全に!

Discussion