"gox.xx" does not match go tool version

brew と goenv のバージョン競合


Posted on Sun, Oct 17, 2021
Tags golang

“go1.16.9” does not match go tool version

Go のコンパイル時にエラーが出て少し悩んだ。

# internal/unsafeheader
compile: version "go1.16.9" does not match go tool version "go1.17"
# runtime/internal/sys
compile: version "go1.16.9" does not match go tool version "go1.17"
# internal/race
compile: version "go1.16.9" does not match go tool version "go1.17"
# unicode/utf8
compile: version "go1.16.9" does not match go tool version "go1.17"

goenv を利用していて、goenv global 1.16.9 と指定しているのに、go1.17 が go tool で利用されている。

こういうときは、go env コマンドで go がどのような環境変数を読み込んでいるか確認する

go env | grep GOVERSION
GOVERSION="go1.17"

たしかに、go1.17 になっているが、インストールした記憶がない…

色々と考えてみたが、自分が go をインストールする経路は、goenv か brew しかないと考え、brew list をすると、go がインストールされていた。 しかも、brew update で go のバージョンが上げられたようだった。

ということで、 brew uninstall go して brew から go をアンインストールし、goenv rehash

go env | grep GOVERSION
GOVERSION="go1.16.9"

無事に設定されて、コンパイルもできるようになった。

brew だと他のツールに巻き込まれて go がインストールされる場合もあるから、注意が必要かもしれない。