2019/03/13 このエントリーをはてなブックマークに追加 はてなブックマーク - brew install go @ 1.10するとGOROOT指定しないとgo get出来ない!?

brew install go @ 1.10するとGOROOT指定しないとgo get出来ない!?

カテゴリ:


表題の通り。


  • Max OS X (high sierra)

  • go@1.10をbrewでインストール

    brew install go@1.10

    して、インストールし/usr/local/opt/go@1.10/bin/goにPATHを通す

  • なにかしらをgo getする

    go get -u github.hogehogeohge

import path does not begin with hostname
が発生。


import path does not begin with hostnameは
GOROOTがらみの時に発生することが多いようで、つまりはPATH通ってないからgo自体のパッケージが見つかってないよということみたいです。

で、GOROOTを設定しないといけないわけですが、
GOROOTってそもそも設定しないで良い時代なのではという気持ちになります。

https://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really
https://kwmt27.net/index.php/2013/06/14/you-dont-need-to-set-goroot-really/

GOROOTの設定が必要なるのはGOROOTを移動させる時ぐらいらしい。


  • もうユーザーが環境変数として設定する必要は無いらしい
  • go env GOROOTすると、goのビルド時のGOROOTが取得できる。ユーザーが環境変数を設定しない場合はこれが使用されるらしい
  • goのプロセス実行前にGOROOTは決定するので、goのコードでosにset envとかしてもGOROOTは書き変わらないらしい

https://golang.org/pkg/runtime/
https://golang.org/cmd/go/#hdr-GOPATH_environment_variable
https://github.com/golang/go/issues/22302


ということで、実際に確認してみる。
brew install したものをみてみると

 /usr/local/opt/go@1.10/bin/go env GOROOT 
/usr/local/opt/go/libexec

実際のGOROOTにあたるディレクトリをのぞいてみると

ls /usr/local/opt/go@1.10/libexec/
bin     go      gocache tmp 

ls /usr/local/opt/go@1.10/libexec/go 
AUTHORS         PATENTS         bin             misc            test
CONTRIBUTING.md README.md       doc             pkg
CONTRIBUTORS    VERSION         favicon.ico     robots.txt
LICENSE         api             lib             src

…どういうことや!?

というと、GOROOTの位置が変わっちゃってるみたいなんですよね。brewからinstallしただけのはずなのに。
そして、何回かbrew unistallとbrew installを繰り返しても再現するのでした。
自分だけなんだろうか。
(2019/03/12の出来事)

しかし、以前 別の端末にbrew install go@1.10した際は

/usr/local/opt/go@1.10/libexec/go
なんてディレクトリはなくて、
/usr/local/opt/go@1.10/libexec 
が GOROOTになっていました。


  • 最近の変更で、brewでインストールするgo@1.10がぶっ壊れてる(brewが原因)
  • brewでインストールしたものがぶっ壊れた(自分の端末が原因)

  • GOROOTを環境変数として設定して調整する
  • GOROOTをgo env GOROOTと合わせる(戻す?)

いかがでしたか?(言ってみたかった)

ということで、ハマった時はそのあたり見直してみてください。



0 件のコメント:

コメントを投稿

GA