Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

今日からGoをはじめる人に伝えたい$GOPATHではまった話

3,235 views

Published on

Go(Un)Conference(Goあんこ)LT大会 1kg

Published in: Technology
  • Be the first to comment

  • Be the first to like this

今日からGoをはじめる人に伝えたい$GOPATHではまった話

  1. 1. 今日から Goをはじめる人に伝えたい $GOPATHではまった話 Go(Un)Conference(Goあんこ)LT大会 1kg 2018/04/17 Yuta Ohashi
  2. 2. 2 blue_goheimochi blue-goheimochi はじめて1ヶ月
  3. 3. 3 いっちょやってみっか! go get github.com/xxxxx/xxxxx
  4. 4. 4 いっちょやってみっか! go get github.com/xxxxx/xxxxx $ go get github.com/syossan27/kirimori package github.com/syossan27/kirimori: cannot download, $GOPATH not set. For more details see: go help gopath
  5. 5. 5 いっちょやってみっか! go get github.com/xxxxx/xxxxx $ go get github.com/syossan27/kirimori package github.com/syossan27/kirimori: cannot download, $GOPATH not set. For more details see: go help gopath
  6. 6. 6 $GOPATH not set
  7. 7. 7 \(^o^)/
  8. 8. 8 出だしからはまってつらい 死にたい
  9. 9. 9 結論
  10. 10. 10 結論 Go言語のバージョン 1.8 以上を使って、 export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN を .zshrc とか .bash_profile とかに追加しておく。 https://github.com/golang/go/wiki/SettingGOPATH
  11. 11. 11 あなたは$GOPATH に悩まされる? チェックしてみましょう $ go version go version go1.2.1 linux/amd64 1.7 未満の場合 → 悩まされる。 1.8 以上の場合 → 悩まされない。
  12. 12. 12 なぜ 1.8 が分岐点なのか? https://github.com/golang/go/issues/17262 Go言語のバージョンが 1.8 以上の場合は、 $HOME/go がデフォルトとして 認識されるようになったため。
  13. 13. 13 やったね!!
  14. 14. 14 どういう人が悩まされる?? 各OSのGo言語のバージョン状況(2018/04/17現在) $ brew install go $ go version go version go1.10.1 darwin/amd64 http://formulae.brew.sh/formula/go Mac https://chocolatey.org/packages/golang Windows $ choco install golang $ go version go version go1.10.1 windows/amd64
  15. 15. 15 あれ?だいじょうぶじゃん?
  16. 16. 16 どういう人が悩まされる?? 各OSのGo言語のバージョン状況(2018/04/17現在) $ brew install go $ go version go version go1.6.2 linux/amd64 Ubuntu 16.04 Ubuntu 14.04 $ sudo apt-get install golang-go $ go version go version go1.2.1 linux/amd64
  17. 17. 17 だめじゃん・・・・
  18. 18. 18 どういう人が悩まされる?? 新しいバージョンをインストールしよう・・! $ sudo add-apt-repository ppa:gophers/archive $ sudo apt-get update $ sudo apt-get install golang-1.10-go https://github.com/golang/go/wiki/Ubuntu 公式のWikiに書いてあるこの方法で新しいバージョンの ものがインストールできる!(パスを通す必要あり)
  19. 19. 19 ちなみに 各OSのGo言語のバージョン状況(2018/04/17現在) sudo yum install golang $ go version go version go1.8.3 linux/amd64 CentOS 7 Ubuntu 18.04 $ sudo apt-get install golang-go $ go version go version go1.10.1 linux/amd64
  20. 20. 20 え、じゃあ別に環境変数に 設定しておかなくてもいいじゃん?
  21. 21. 21 ちゃんと設定しておくのがよさそう・・! os.Getenv("GOPATH") が 実装されているソースコードに対して 問題が発生する可能性があります。 https://medium.com/eureka-engineering/gopath-を-build-default-gopath-で適切に扱う-1f3ee50e9633
  22. 22. 22 ま? ま?
  23. 23. 23 マジでした 下記のコードを各環境で動かしてみた package main import ( "fmt" "go/build" "os" ) func main () { fmt.Println("os.Getenv(¥"GOPATH¥") : " + os.Getenv("GOPATH")) fmt.Println("build.Default.GOPATH : " + build.Default.GOPATH) } test.go
  24. 24. 24 マジでした Mac $ go run test.go os.Getenv("GOPATH"): build.Default.GOPATH: /home/blue-goheimochi/go $GOPATH設定前 $GOPATH設定後 $ go run test.go os.Getenv("GOPATH"): /home/blue-goheimochi/go build.Default.GOPATH: /home/blue-goheimochi/go
  25. 25. 25 マジでした Windows $ go run test.go os.Getenv("GOPATH") : build.Default.GOPATH : C:¥Users¥blue-goheimochi¥go $GOPATH設定前 $GOPATH設定後 $ go run test.go os.Getenv("GOPATH") : C:¥Users¥blue-goheimochi¥go build.Default.GOPATH : C:¥Users¥blue-goheimochi¥go
  26. 26. 26 マジでした Ubuntu 16.04、Ubuntu 14.04 $ go run test.go os.Getenv("GOPATH") : build.Default.GOPATH : $GOPATH設定前 $GOPATH設定後 $ go run test.go os.Getenv("GOPATH"): /home/blue-goheimochi/go build.Default.GOPATH: /home/blue-goheimochi/go
  27. 27. 27 マジでした CentOS 7 $ go run test.go os.Getenv("GOPATH") : build.Default.GOPATH : /home/blue-goheimochi/go $GOPATH設定前 $GOPATH設定後 $ go run test.go os.Getenv("GOPATH") : /home/blue-goheimochi/go build.Default.GOPATH : /home/blue-goheimochi/go
  28. 28. 28 まとめ 今日からGoをはじめる人は・・・ • バージョンは 1.8 以上ではじめる • $GOPATH は明示的に設定する export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
  29. 29. 29 おわり

×