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が搭載されている今、もう何も怖くありません。
つまり、curl
やvim
のようにGoもsudo apt install golang
だけでGoの環境が揃ってしまうのです。
検証
DockerのUbuntuイメージで検証します。
/app/go.mod
でGo 1.23.0を指定します。
なお、apt install golang
だけで環境構築ができると書きましたが、go.devからバイナリをインストールするのにCA証明書が必要なのでca-certificates
も一緒にインストールします。
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