godep
Go言語のライブラリが依存しているパッケージの管理ツールとして、
godepというものを見つけた。
試しに使ってみたところ良さそうなのでメモ。
自分の手元では自作のゴミライブラリであるsimple-irc-bot-goで確認した。
godepを使った形に自己ライブラリを改める
以下の手順を踏む。
godepのインストール
go get github.com/kr/godep で終わり。
依存パッケージの保存
カレントディレクトリを自分が作成しているライブラリに切り替えて、
godep saveを実行する。するとカレントディレクトリ以下にGodepsディレクトリが作成される。
Godeps/Godeps.json ファイルに依存しているライブラリの情報が登録される。
{
"ImportPath": "github.com/futoase/simple-irc-bot-go",
"GoVersion": "go1.1.2",
"Deps": [
{
"ImportPath": "code.google.com/p/gomock/gomock",
"Rev": "ae48011f41cd01e8e4e77d501502d2e734816da2"
},
{
"ImportPath": "github.com/ActiveState/tail",
"Rev": "36ba8bccb91f119d56866e51ae0dd11ba2731ec2"
},
{
"ImportPath": "github.com/fluffle/goevent/event",
"Rev": "972f9141f4868fad5cd0704bb998b56b18742133"
},
...
.gitignoreに配布側として不必要なファイルを登録する
godep save を実行すると、Godeps ディレクトリ以下に依存している
パッケージの本体そのものが_workspace ディレクトリにコピーされる。
godep go build main.go という形で goコマンドの前に godep をつけると
_workspace ディレクトリ以下にあるパッケージを使う形になり、
```$GOPATH/src``以下にライブラリをインストールしなくても使える状態になる。
...けど、自作ライブラリを配布するときには必要がないので.gitignoreに記述する。
Godeps/Readme
Godeps/_workspace
git pushを行う
Godeps/Godeps.json ファイルをgit add する。
これでライブラリ配布側の準備は終わり。
godepを使ったライブラリを利用したい場合
godepを使ってパッケージ管理をしているライブラリを
利用し、godepを使って依存しているパッケージをインストールしたい場合は以下の手順を踏む。
go getする。
使いたいライブラリをgo get してインストールする
go get github.com/futoase/simple-irc-bot-go
依存しているライブラリをインストール
ライブラリのパスに移動して(この場合は$GOPATH/src/github.com/futoase/simple-irc-bot-go)、
godep getコマンドを実行する。
そうすると、$GOPATH/src 以下に依存ライブラリがインストールされる。