goenvを用いたGo環境のセットアップ

Posted on July 1, 2023 by nobiruwa

tl;dr

$ git clone https://github.com/syndbg/goenv.git $HOME/.goenv
$ cat << EOF >> ~/.profile
GOENV_HOME="$HOME/.goenv"
GOENV_BIN="$GOENV_HOME/bin"
if [ -d "$GOENV_BIN" ]; then
    export PATH="$GOENV_BIN:$PATH"
    eval "$(goenv init --no-rehash -)"
    (goenv rehash &) 2> /dev/null
fi
EOF

動機

ory/hydraを試すためにGo言語の環境が必要でした。Goをgoenv/goenvによって管理したいと思いました。

セットアップ

goenvのチェックアウト

goenvリポジトリをチェックアウトします。

場所は公式に合わせて~/.goenvとします。

$ git clone https://github.com/syndbg/goenv.git $HOME/.goenv

~/.profileの記述

~/.profileにて、環境変数PATHを設定します。

GOENV_HOME="$HOME/.goenv"
GOENV_BIN="$GOENV_HOME/bin"
if [ -d "$GOENV_BIN" ]; then
    export PATH="$GOENV_BIN:$PATH"
    eval "$(goenv init --no-rehash -)"
    (goenv rehash &) 2> /dev/null
fi

Goのインストール

goenv installコマンドで~/.goenv/versions配下に特定のバージョンのGoをインストールします。

# インストール可能なバージョンを列挙する
$ goenv install --list
# 1.20.5をインストールする場合
$ goenv install 1.20.5

登録されたGoは下記のコマンドで確認できます。

$ goenv versions

グローバルのGo環境

グローバルのGo環境を指定します。

$ goenv global <goenv versionsで列挙されるバージョン文字列>

ローカルのGo環境

ローカルのGo環境を設定するには、以下のコマンドを実行します。

$ cd <設定したいディレクトリ>
$ goenv local <goenv versionsで列挙されるバージョン文字列>

goenv localを実行したディレクトリには.go-versionファイルが生成されます。

goenv localを実行したディレクトリとその子孫ディレクトリで実行するgo/gofmtコマンド等は、.go-versionで指定されたGo環境のものが使用されます。