6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【環境変数】go getでパッケージがインストールされるディレクトリは$GOPATH/bin。設定していない場合は$HOME/go/binに入る。

Posted at

どうも、たかふみです。
少し前から会社の同期とGoでLINEBotの開発を行なっています。

開発で使うライブラリをインストールするため、go getをした後、コマンドを実行したのですがwire: not foundと表示されてしまいました。

**「go getでインストールしたものってどこにインストールされるんだっけ?」**ということで、今回はgo getによるインストール先や$GOPATHについて調べた内容をまとめておきたいと思います!

■結論

$GOPATHを設定していなければ$HOME/binにインストールされる。
go getでインストールされたライブラリは$GOPATH/binにインストールされる。

go get github.com/google/wire/cmd/wireを実行

DIライブラリ「wire」をインストールするためにgo getを実行。wireコマンドを実行したところ下記のように表示。

/go/src/github.com/go-server-dev # wire
ash: wire: not found

パスが通っていないのが原因と考えました。そこで出たのが**「go getでインストールしたものってどこにインストールされるんだろう」**という疑問。

echo $GOPATHで確認

調べてみると$GOPATH/binにインストールされることが分かったので、echoで$GOPATHを確認。

echo $GOPATH

何も出ませんでした。確かに設定した覚えはありません。

■そもそも$GOPATHとは何か

The GOPATH environment variable specifies the location of your workspace.
引用:https://github.com/golang/go/wiki/SettingGOPATH

$GOPATHとはワークスペースの場所とのこと。また、go help gopathより、go getでインストールしたパッケージについては$GOPATHで設定されたディレクトリにインストールされるとありました。

そうなると、$GOPATHを設定していない僕の環境ではどこへインストールされているのでしょうか。。。

■設定していない場合は$HOME/goにインストールされる

githubのwikiに書いてありました。

If no GOPATH is set, it is assumed to be $HOME/go on Unix systems and %USERPROFILE%\go on Windows.
https://github.com/golang/go/wiki/SettingGOPATH

設定していない場合は$HOME/goと見なされるようです。
確認したところ、今回インストールしたパッケージ「wire」が$HOME/go/binに入っていることを確認しました。

/go/src/github.com/go-server-dev # echo $HOME
/root
/go/src/github.com/go-server-dev # ls /root/go/
bin  pkg  src
/go/src/github.com/go-server-dev # ls /root/go/bin/
wire

$GOPATHを設定しておく

きちんと$GOPATHを設定しておきます。

/go/src/github.com/go-server-dev # vim ~/.bash_profile

↓vimで記述
---
export GOPATH=$HOME/go
---

/go/src/github.com/go-server-dev # source ~/.bash_profile
/go/src/github.com/go-server-dev # echo $GOPATH
/root/go

echo $GOPATHで設定したパスが表示されることが確認できました。

まとめ:$GOPATHは明示的に設定しておいた方が良さそう

go getでインストールされる場所を把握するためにも、開発に入る前に$GOPATHは設定しておいた方が良さそうです。設定していない場合は$HOME/goにインストールされることをお忘れなく!

それでは!

参照

SettingGOPATH
https://github.com/golang/go/wiki/SettingGOPATH

GOPATH は適当に決めて問題ない
https://qiita.com/yuku_t/items/c7ab1b1519825cc2c06f

GOPATHの設定とgo get
http://kodama-tech.hatenablog.com/entry/2016/12/14/002115

[備忘録]Go言語のGOPATHやパッケージについて
https://qiita.com/chano2/items/ea76cc503e651f07bfb0

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?