目次
概要
Golang
で色んなプロジェクトを進める時、複数のバージョンのGolang
を1つのマシン(PC)で使う時があります。
今回のブログポストでは1つのマシン(PC)で色んなバージョンのGolang
を使うためgoenv
をインストールして使う方法について説明します。
goenv
goenv
はPython
のpyenv
、Ruby
のrbenv
のように1つのマシンで色んなバージョンのGolang
を使うようにしてくれるGo Version Management
です。
今回のブログポストは、macOS
でgoenv
をインストールして使う方法について説明します。macOS
でGolang
をインストールする方法については下記のリンクを参考してください。
goenvのインストール
次のコマンドを実行してmacOS
でgoenv
をインストールします。
brew install goenv
インストールが完了されたら、次のコマンドを実行します。
goenv --version
問題なくインストールされたら、下記のようにgoenv
のバージョンを確認することができます。
goenv 2.0.6
goenvの設定
インストールが完了されたら、問題なくgoenv
を使うため.zshrc
ファイルを開いて下記のように修正します。
...
# go
export GOROOT="$(brew --prefix golang)/libexec"
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"
alias go=~/.goenv/shims/go
goenv version
次のコマンドを実行すると、goenv
で現在設定されたGolang
バージョンを確認することができます。
goenv version
そしたら次のようにgoenv
で現在設定されたGolang
のバージョンを確認することができます。
system (set by /Users/dev-yakuza/.goenv/version)
goenv versions
次のコマンドを実行すると、goenv
を使って現在マシンにインストールされたGolang
のバージョンを確認することができますし、その中で現在選択さらたバージョンが何か確認することができます。
goenv versions
そしたら下記のようにgoenv
でインストールしたGolang
のバージョンと現在設定されたGolang
バージョンを確認できます。
* system (set by /Users/dev-yakuza/.goenv/version)
現在はgoenv
を使って他のバージョンのGolang
をインストールしてないので基本バージョン(system)だけ表示されて、基本バージョンが設定されたことが確認できます。
goenv install –list
次のコマンドを実行すると、インストール可能なGolang
のバージョンを確認することができます。
goenv install --list
そしたら、次のようにGolang
バージョンを確認することができます。
...
1.19.5
1.19.6
1.20.0
1.20rc1
1.20rc2
1.20.1
goenv install
次はgoenv
を使ってインストールしたいGolang
のバージョンをインストールしてみましょう。今回のブログポストでは1.20.1
バージョンをインストールしてみます。新しいGolang
のバージョンをインストールするため次のコマンドを実行します。
goenv install 1.20.1
そしたら次のように新しいGolang
のバージョンがインストールされることが確認できます。
Downloading go1.20.1.darwin-amd64.tar.gz...
-> go1.20.1.darwin-amd64.tar.gz
######################################################################################################################## 100.0%
Installing Go Darwin 64bit 1.20.1...
Installed Go Darwin 64bit 1.20.1 to /Users/dev-yakuza/.goenv/versions/1.20.1
インストールされたら、次のコマンドを実行してうまくインストールされたか確認します。
goenv versions
そしたら次のように1.20.1
バージョンのGolang
がインストールされたことが確認できます。
* system (set by /Users/dev-yakuza/.goenv/version)
1.20.1
goenv rehash
rehash
はgoenv
に新しくインストールされたGolang
のバージョンを認識される時、使うコマンドです。したがって、新しいバージョンのGolang
をインストールしたら、次のようにrehash
コマンドを実行する必要があります。
goenv rehash
goenv global
新しくインストールした1.20.1
バージョンのGolang
をグローバル(Global)で使う方法について説明します。次のコマンドを実行すると新しいGolang
のバージョンを基本バージョンで設定します。
goenv global 1.20.1
次のコマンドを実行すると、新しいバージョンのGolang
がうまく設定されたか確認します。
go versions
そしたら、次のように新しいGolang
のバージョンがうまく設定されたことが確認できます。
system
* 1.20.1 (set by /Users/dev-yakuza/.goenv/version)
また、次のコマンドを実行すると現在設定されたGolang
のバージョンを確認することができます。
goenv version
そしたら次のようにGolang
のバージョンを確認することができます。
1.20.1 (set by /Users/dev-yakuza/.goenv/version)
もちろん、基本コマンドでもGolang
のバージョンを確認することができます。
go version
そしたら次のようにGolang
のバージョンを確認することができます。
go version go1.20.1 darwin/amd64
goenv global
で設定したバージョンは基本バージョンで設定されます。したがって、ターミナルを終了して再起動しても常に1.20.1
バージョンのGolang
が使うようになります。
goenv shell
goenv shell
はこのコマンドを実行したターミナルだけで特定バージョンのGolang
を使えるようにします。
goenv global
との違いを確認するため、まず下記のコマンドを実行して他のGolang
のバージョンをインストールします。
goenv install 1.19.6
インストールが完了されたら、次のコマンドを実行してターミナルだけそのバージョンを使えるようにします。
goenv shell 1.19.6
次は下記のコマンドを実行してGolang
のバージョンがうまく変更されたか確認します。
goenv versions
そしたら、次のようにGolang
のバージョンがうまく変更されたことが確認できます。
system
* 1.19.6 (set by GOENV_VERSION environment variable)
1.20.1
また、次のコマンドを実行すると現在設定されたGolang
のバージョンが確認できます。
goenv version
そしたら、次のようにGolang
のバージョンを確認できます。
1.19.6 (set by GOENV_VERSION environment variable)
もちろん、基本コマンドでもGolang
のバージョンを確認することができます。
go version
そしたら次のようにGolang
のバージョンが確認できます。
go version go1.19.6 darwin/amd64
goenv shell
は当該コマンドを実行したターミナルが終了されると、設定したバージョンが初期化されて、基本のGolang
のバージョンが再び設定されます。つまり、ターミナルを終了して再起動すると、上でgoenv global
で設定したバージョンがアクティブになります。
goenv local
goenv local
コマンドを実行すると、コマンドを実行したプロジェクト(フォルダ)では常にそのバージョンが使うようにアンリます。goenv local
は次のように使えます。
goenv local 1.19.6
コマンドを実行したら.go-version
ファイルが生成されて、1.19.6
のバージョンが記録されることが確認できます。
また、次のコマンドを実行するとGolang
のバージョンが1.19.6
でうまく変更されたことが確認できます。
goenv versions
goenv version
go version
.go-version
ファイルがあるフォルダでターミナルを開くと、goenv
が自動でそのバージョンを認識して当該バージョンのGolang
を設定します。
.go-version
goenv local
で確認しましたが、.go-version
ファイルを使うとそれそれのプロジェクトに合うGolang
のバージョンを管理することができます。他のメンバーとGolang
でプロジェクトを進むなら、.go-version
ファイルを生成してバージョンを記録しておくと役に立ちます。
.go-version
ファイルに記録されたバージョンが現在のマシンにインストールされてない時があります。これを確認するため.go-version
ファイルを次のように修正します。
1.18.10
そしてターミナルを終了した後、再起動すると次のようなエラーメッセージを確認することができます。
goenv: version '1.18.10' is not installed (set by /Users/dev-yakuza/projects/temp/test/.go-version)
.go-version
ファイルに記録されたGolang
バージョンがまだインストールされてないので、エラーが発生しました。
この場合、次のコマンドを実行して.go-version
ファイルに記録されたバージョンをインストールします。
goenv install
そしたら次のように.go-version
ファイルに記録されたGolang
バージョンがインストールされることが確認できます。
Downloading go1.18.10.darwin-amd64.tar.gz...
-> go1.18.10.darwin-amd64.tar.gz
####################################################################################################################### 100.0%####################################################################################################################### 100.0%
Installing Go Darwin 64bit 1.18.10...
Installed Go Darwin 64bit 1.18.10 to /Users/dev-yakuza/.goenv/versions/1.18.10
また、次のコマンドを実行すると、Golang
のバージョンがうまく変更できたことが確認できます。
goenv versions
goenv version
go version
これで、プロジェクトを共同で開発するメンバーと同じGolang
のバージョンを使うようにすることができます。
完了
これで1つのマシンで複数のGolang
プロジェクトを進む時、各プロジェクトに合うGolang
のバージョンを管理するためgoenv
をインストールして使う方法について見てみました。Golang
のバージョンが違う複薄のプロジェクトを同時に開発している場合、goenv
を活用してGolang
のバージョンを管理してみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。