📖

goenv で最新バージョンの Go が表示されないなら再インストール

2022/04/02に公開2

はじめに

最近 Go の最新バージョンとして 1.18 がリリースされました。ちょうど新しく個人プロジェクトを始めようと思い、1.18 を使おうとしたところ、バージョンが見つからない。。。ということがありました。

その時の解決策などを備忘録的にまとめていきます。

環境

  • MacOS 12.3.1 (21E258)
  • goenv (バージョン管理)

事象

私は go のバージョン管理として goenv を使っています。以前に go の環境を構築したときにインストールしていたので、今回も goenv を使って進めようとしたところ思うわぬ事象に遭遇しました。

それは、以下のように最新の go バージョンはどれかなと探そうと思い、インストール可能なバージョン一覧を確認したときに発生しました。

> goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
  1.3.2
  1.3.3
  1.4.0
  1.4.1
  1.4.2
  1.4.3
  1.5.0
  1.5.1
  1.5.2
  1.5.3
  1.5.4
  1.6.0
  1.6.1
  1.6.2
  1.6.3
  1.6.4
  1.7.0
  1.7.1
  1.7.3
  1.7.4
  1.7.5
  1.8.0
  1.8.1
  1.8.3
  1.8.4
  1.8.5
  1.8.7
  1.9.0
  1.9.1
  1.9.2
  1.9.3
  1.9.4
  1.9.5
  1.9.6
  1.9.7
  1.10.0
  1.10beta2
  1.10rc1
  1.10rc2
  1.10.1
  1.10.2
  1.10.3
  1.10.4
  1.10.5
  1.10.6
  1.10.7
  1.11.0
  1.11beta2
  1.11beta3
  1.11rc1
  1.11rc2
  1.11.1
  1.11.2
  1.11.3
  1.11.4
  1.12beta1

なんとインストール可能なバージョンが 1.12 までとなっていました。リリースノートを見たところ、本バージョンは2019年2月頃のバージョンであり、現在(2022年4月)から3年以上前のバージョンになります。

原因

原因はすぐにわかりました。
私が使っている goenv のバージョンが古かったようです。

> goenv -v
goenv 1.23.3          

既にbetaの2.0が出ているので明らかにこのバージョンが古いようだったので、こちらをバージョンアップすれば解決しそうですね(、、、と思ったのですが、なんとこのあとまたひとハマリありました)。

失敗

ということで、goenv のバージョンアップを試してみました。
が、項番に書いている通り、失敗してしまいました。。。

私は brew で goenv を使っているので、brew でバージョンアップをしようと思い、以下コマンドを実行しました。

> brew update
> brew upgrade goenv

Warning: goenv 1.23.3 already installed

むむむ?
なんと brew で認識している goenv の最新バージョンが 1.23.3 のような感じでした。。。

解決方法

どういうこと??と思い、github の issue を検索していたところ、以下でアンインストールして、 --HEAD してインストールすると最新になるような記述を発見

https://github.com/syndbg/goenv/issues/80#issuecomment-811637470

> brew uninstall goenv
> brew install --HEAD goenv

すると、なにやら良さげなログが出てきました!

Uninstalling /usr/local/Cellar/goenv/1.23.3... (158 files, 265.2KB)
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 5 formulae.

==> Cloning https://github.com/syndbg/goenv.git
Cloning into '/Users/yuta519/Library/Caches/Homebrew/goenv--git'...
==> Checking out branch master
Already on 'master'
Your branch is up to date with 'origin/master'.
🍺  /usr/local/Cellar/goenv/HEAD-d4e2dd7: 280 files, 488.8KB, built in 3 seconds
==> Running `brew cleanup goenv`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/yuta519/Library/Caches/Homebrew/goenv--1.23.3... (70.7KB)

では、本当に最新の goenv が入ったか確認してみます。

> goenv -v
goenv 2.0.0beta11

やりました!
ありがとう、issue で共有してくれた方!!

これで万事 OK、ありがとうございました。。。。。。。。

と思ったのですが、本来やりたかったことは最新バージョンのgoをインストールでした。
完全に目的をすり替えて忘れてしまっていました。

確認

確認ということで、以下をやってみました。

まずはインストール可能一覧の確認です!

> goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
  1.3.2
  1.3.3
  1.4.0
  1.4.1
  1.4.2
  1.4.3
 ・・・
  1.16.0
  1.16beta1
  1.16.1
  1.16.2
  1.16.3
  1.16.4
  1.16.5
  1.16.6
  1.16.7
  1.16.8
  1.16.9
  1.16.10
  1.16.11
  1.16.12
  1.16.13
  1.16.14
  1.16.15
  1.17.0
  1.17beta1
  1.17rc1
  1.17rc2
  1.17.1
  1.17.2
  1.17.3
  1.17.4
  1.17.5
  1.17.6
  1.17.7
  1.17.8
  1.18.0
  1.18beta1
  1.18beta2
  1.18rc1

お、1.18 がいらっしゃいますね。

インストールしてみます。

Downloading go1.18.darwin-amd64.tar.gz...
-> https://golang.org/dl/go1.18.darwin-amd64.tar.gz
££££££££££££££££££££££££££££££££££££££££££££££££££££ 100.0%
Installed Go Darwin 64bit 1.18.0 to /Users/yuta519/.goenv/versions/1.18.0

正常にインストールされていそうです。

> goenv versions
* system (set by /Users/yuta519/.goenv/version)
  1.18.0

そして、最後にバージョンを切り替えてみます。

> goenv global 1.18.0

Discussion

tenkohtenkoh

ご存知かもしれませんが、goenvを使わずとも複数バージョンのGoが利用可能ですね😃
個人的にはグローバルのGoは最新にしておき、古いバージョンが必要になったら下記手順で導入するのがお気に入りです。

https://go.dev/doc/manage-install

utahutah

コメントありがとうございます!
バージョン管理で goenv とか入れないでも切り替えられたんですね!知らなかったです

私も上記リファレンス参考にして Go のバージョン管理してみます😄

有益な情報ありがとうございます!引き続き何かあれば情報提供いただけると嬉しいです!!