概要
golang 純正のパッケージ管理ツールである dep を使ってみました
ruby で言うところの gem、python で言うところの pip という感じでしょうか
環境
- macOS X 10.12.6
- golang 1.9.1
- dep devel
dep のインストール
- brew install dep
で今回はインストールしました
homebrew が使えない場合は go get でもインストール可能です
go get -u github.com/golang/dep/cmd/dep
GOPATH 配下に作業ディレクトリを作成する
今回 GOPATH は /Users/hawksnowlog/go/
とします
この配下に作業ディレクトリを作成します
mkdir -p /Users/hawksnowlog/go/src/github.com/hawksnowlog/dep-test
cd /Users/hawksnowlog/go/src/github.com/hawksnowlog/dep-test
初期化
- dep init
とすると dep 関連のファイルが自動で生成されます
- Gopkg.lock
- Gopkg.toml
- vendor/
Gopkg.toml ファイルに依存パッケージを記載していきます
テスト用のコード
以下を使います
logrus というロギング用のライブラリを使っています
- vim main.go
package main
import (
log "github.com/Sirupsen/logrus"
)
func main() {
log.WithFields(log.Fields{
"key": "value",
}).Info("logrus test")
}
依存パッケージを追加する
今回はとりあえず 1 つだけ追加してみます
dep ensure -add github.com/Sirupsen/logrus
Gopkg.toml に以下のように定義が追加されていると思います
- cat Gopkg.toml
[[constraint]]
name = "github.com/Sirupsen/logrus"
version = "1.0.3"
パッケージをインストールする
- dep ensure
と実行すると Gopkg.toml に記載されたパッケージが vendor/ 配下にインストールされます
確認は dep status で確認できます
- dep status
PROJECT CONSTRAINT VERSION REVISION LATEST PKGS USED
github.com/Sirupsen/logrus ^1.0.3 v1.0.3 f006c2a f006c2a 1
golang.org/x/crypto * branch master 9419663 9419663 1
golang.org/x/sys * branch master ebfc5b4 ebfc5b4 2
簡単です
動作確認
- go build
- go install
- dep-test
と実行すると以下のようにログが表示されると思います
INFO[0000] logrus test key=value
追加してもコード内で使用されていないと vendor/ 配下には配置されない
試しに使っていないパッケージを追加してみます
dep ensure -add github.com/astaxie/beego
まず使っていないパッケージを追加しようとすると警告が出ます
"github.com/astaxie/beego" is not imported by your project, and has been temporarily added to Gopkg.lock and vendor/.
If you run "dep ensure" again before actually importing it, it will disappear from Gopkg.lock and vendor/.
ただ、Gopkg.toml には記載されています
[[constraint]]
name = "github.com/astaxie/beego"
version = "1.9.0"
この状態でインストールして確認してみましょう
- dep ensure
- dep status
しても先ほどと結果は変わらないです
このように dep はコード内で使用しているパッケージだけを vendor` 配下にインストールしてくれるようです
ちなみに dep で追加したけど使用されていないパッケージは
/Users/hawksnowlog/go/pkg/dep/sources/https---github.com-astaxie-beego/
配下にあるようです
最後に
go 純正のパッケージ管理ツール dep を使ってみました
昔は toml ファイルではなく Json ファイルで管理していたようです
dep を使用するには golang のバージョンも 1.8 以上が必要になります
dep は import で参照しているライブラリを管理しているリポジトリにアクセスできる必要があります
今回は Github 上で公開されているライブラリだったので特に問題ないですが例えばプライベートなリポジトリや IP などでアクセス制限をしているライブラリに関しては dep を実行するサーバからもアクセスできる必要があるのでご注いください
0 件のコメント:
コメントを投稿