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
以下に依存ライブラリがインストールされる。