🔰

【初心者向け】丁寧な Go のバージョンアップ手順

2023/08/30に公開

はじめに

Go の 公式記事 を参考にまとめています。

前提

  • Go がインストールされていること。
    • go install が実行できれば良いので、バージョンは問いません。
    • まだの方は Download and install からインストールしましょう。
  • プロジェクトで Go Modules を使っていること。
    • まだ GOPATH を使っている方は、この際に Go Modules への移行を検討することをオススメします。
  • Git がインストールされていること。

手順

以下で Go をバージョンアップする手順を解説します。
今回は例としてバージョン1.21.0にアップデートする想定です。

1. インストールするバージョンの確認

まずは All releases でインストールする Go のバージョンを選択してください。
Go は後方互換性が保証されているため、迷ったら最新の安定版を選んでおきましょう。

2. Go をインストール

ターミナルを開き、go install コマンドで Go をインストールします。

go install golang.org/dl/go1.21.0@latest
go1.21.0 download

無事にインストールできたかを確認します。

go1.21.0 version

go version go1.21.0 darwin/arm64のような文字が出力されていたら成功です。

3. デフォルトのバージョンに設定する

今回インストールしたバージョンをデフォルトで使えるようにするためには、環境変数 GOROOT を修正し、パスを通す必要があります。

シェルの設定ファイルを開き、以下の環境変数を追加します。

.zshrc
export GOROOT=$(go1.21.0 env GOROOT)
export PATH=$GOROOT/bin:$PATH

export GOROOT=...で今回インストールした Go の場所を指定し、export PATH=...でパスを通しています。
パスを通すについて分からない方は、「PATHを通す」とは何か、改めてまとめてみた を読んでみてください。

環境変数の追加ができたら、設定ファイルを忘れずに反映します。

source ~/.zshrc

4. go.mod を更新する

プロジェクトに適応するためには、Go のバージョンだけではなく、go.mod も更新してあげる必要があります。
go mod tidy コマンドを実行しましょう。

go mod tidy -go=1.21.0

5. 不要な Go をアンインストール

もし元の Go を使わない場合は、せっかくなのでアンインストールしておきましょう。
OS によって手順が分かれます。

Linux / FreeBSD

  1. /usr/local/go ディレクトリを削除します。
sudo rm -rf /usr/local/go
  1. /etc/profile または ~/.profile を編集します。

MacOS

  1. /usr/local/go ディレクトリを削除します。
sudo rm -rf /usr/local/go
  1. /etc/paths.d/go を削除します。
sudo rm -rf /etc/paths.d/go

注意点として、/etc/paths.d/go は Go の公式インストーラを利用してインストールした時にのみ存在します。

ファイルが存在しない場合は、Linux の手順ようにシェルの設定ファイルを確認してみてください。
上記のコマンドでやりたいことは、環境変数 PATH から bin のパスを削除したいだけです。

Windows

Windows はコントロールパネルを使ってアンインストールします。
適宜、Microsoft 公式の手順 も参照してみてください。

  1. タスクバーの検索で、「コントロールパネル」と入力し、クリックして開きます。
  2. 「プログラム」>「プログラムと機能」を選択します。
  3. プログラムの一覧から Go をクリックし、「アンインストール」を選択します。
  4. 残りは画面の指示に従います。

さいごに

Go のバージョン管理は、今回紹介した公式が推奨している方法に乗っておくことをオススメします。
env 系のツールでバージョンを管理する方法もありますが、Go は後方互換性を気にする必要がないため、あまりメリットがありません。

Go に入っては Go に従いましょう!

Discussion