Goのことはじめ その1:GOPATHとghqのルート指定
はじめに
業務でGoを触ることになったので、Goに関して気になったことをまとめていこうと思います。
GOPATH
GOPATHはGoで使う環境変数なのですが、2つの役割があります。
- ビルド時のインポートパスのルート(正確には$GOPATH/src配下)
- go getコマンドで外部パッケージをインストールしたときの、ダウンロードルートディレクトリ
詳細は公式ドキュメントに記載されています。
How to Write Go Code - The Go Programming Language
ghq
id:motemen さん作の、Go製のリポジトリ管理ツールです。
github.com
$ ghq get (GitHubの)ユーザ名/リポジトリ名
とすると、ローカルの "~/.ghq" というディレクトリにデフォルトでインストールされます。
"ユーザ名/リポジトリ名"の部分ですが、GitHub以外、例えばbitbucketは"https://ユーザ名@bitbucket.org/…"のように一から指定する必要があります。
Goにはgetコマンドがあるので、事足りるような気もするのですが、他にもクローンされたリポジトリを一覧したり、指定したローカルのリポジトリにcdできるので、重宝しています。
GOPATHとghqのルートをどこに設定するか
「GOPATHは適当に決めて問題ない」という記事もありましたが、個人的には適当に決めてあとで地雷を踏みたくないのが性分です。
例えば".ghq"の下にgetしたけど、やっぱりこのライブラリをインポートしたいから"go/src"の下に入れたい…となったときにシンボリックリンクを貼るのか、同じものをgo getするのかなど、色々困りそうです。
それを踏まえて、自分はこのようにしようと思います。
$GOPATH
export GOPATH=~/go
.gitconfig
[ghq] root = ~/.ghq root = ~/go/src
Go 言語のソースだけは go get で 取得し "$GOPATH/src" 以下に
そうでないものは ghq get で "~/.ghq" 以下に取得するようにしています。
今回はここまでです。
次回はGoのバージョン管理システム選定について書きたいと思います。