re:inventing the wheel

それでも車輪は回っている

MacOSX YosemiteでIntelliJとGoLang Pluginを利用する

Yosemiteから/etc/launchd.confでグローバルな環境変数が設定できなくなり、 IntelliJ(以下IDEA)でGoプロジェクトを開く(作成する)度に警告メッセージが表示されるようになったので試行錯誤してみました。

  • Event Logにも下記のようなメッセージが出力されます。

    Problem with env variables
    GOROOT environment variable is empty or could not be detected properly.
    This means that some tools like go run or go fmt might not run properly.
    See instructions on how to fix this. (show balloon)
    
    Problem with env variables
    GOPATH environment variable is empty or could not be detected properly.
    This means that some tools like go run or go fmt might not run properly.
    See instructions on how to fix this. (show balloon)
    

結論から

まず結論から言うと、警告(Problem)メッセージは無視しても問題なく動作しました。 気持ち悪いですが、今はGo言語の学習が目的なのでとりあえず目を瞑ろうかと。。。

というと、ネタにならないので試行錯誤した内容を書き添えていきたいと思います。

launchdによるグローバル環境変数の設定について

Mavericksのころは、警告メッセージの “See instructions on how to fix this.” に説明されている通り /etc/launchd.conf に以下の記述を追記することでMacの起動時にグローバル変数が設定され解決できました。

1
2
setenv GOROOT /usr/local/opt/go/libexec
setenv GOPATH $HOME/.go

また、下記のコマンドをターミナルから実行することで、launchdで値が設定されていることを確認できます。

1
2
3
4
$ sudo launchctl getenv GOROOT
/usr/local/opt/go/libexec
$ sudo launchctl getenv GOPATH
/User/yosuke/.go

しかし、Yosemiteにアップデートしてからは、launchctl getenvの出力が空になりグローバル変数が設定されていません。
そこで、ターミナルから下記コマンド実行し手動設定を行ってみました。が、結果は変わらず。。。

1
2
$ sudo launchctl setenv GOROOT $GOROOT
$ sudo launchctl setenv GOPATH $GOPATH

※事前に、.bash_profileでGOROOT/GOPATHが設定されていることが前提。 詳細はInstall the Go toolsを参照。

ただし、新規にGo言語プロジェクトを作成した際にlaunchctlでGOROOT/GOPATHを指定しておくと、 “Tools”->“Go Tools”->“go plugin Debug internals”->“go env”でgo envの出力を表示することができました。(設定しない場合でも一度コードを実行すると同じ状態になるので問題ありませんでした。)

試行錯誤中に”brew upgrade”しちゃったら…

試行錯誤中に、brew updateをしてみたらGo言語の最新版1.4があったのでupgradeしてみました(それまでは1.3系)。 結果としては、Goプロジェクトを作成する際に、Go SDKが選択できなくなりました。
Go language support plugin(Ver 0.9.15.3)のRelease Noteをよく読むと、Go SDK (Go 1.2 on linux/mac/windows)と記載されています。 もちろん、可能性を考慮して1.2を導入し直しましたが変化なし。

なお、インストールは下記のように行いました。

1
2
$ brew tap homebrew/versions
$ brew install go12

.bash_profileを以下のように設定

1
2
3
4
5
6
## go lang Setting
if [ -x "`which go`" ]; then
  export GOROOT=/usr/local/opt/go12/libexec
  export GOPATH=$HOME/.go
  export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
fi

一応現在はgo1.2を利用しています。


私の場合、メインの開発環境がIDEA(主にchef cookbookの作成に使用)なのでGo言語の開発環境にも利用しみましたが、 今回色々調べてみてみると、IDEA+Go言語というのはそれなりに定評があるようです。実際、私も(警告が出る以外は)心地よく利用しています。

YosemiteのJRE問題でIDEAが正規の状態で動作しないとか、”Go language support plugin”がメジャーリリースされていないとか。 諸所の問題ひっくるめて今回のトラブルシュートは諦めることにしました。折を見て再チャレンジしてみようとは思います。
※当初はIDEA13の結果のみで書こうと思いましたが、IDEA14にアップデートしても同様となりました。