いざ自分がやろうとした際にちょっとだけ迷ったのでメモしときます。
バージョン指定してパッケージをインストール
go get <パッケージ名>@<指定するバージョン>
例えば、 gqlgen の v0.10.2 をインストールしたい場合はこうなります。
go get github.com/99designs/gqlgen@v0.10.2
本編はここまで。
go.mod でパッケージ管理しているときに自分がした勘違い
ここからはおまけです。
go.mod でパッケージ管理をしている場合、以下のようなファイルがあると思います。
go.mod
module github.com/tcshy/hoge
go 1.13
require (
github.com/99designs/gqlgen v0.10.2
github.com/aws/aws-sdk-go v1.28.9
github.com/gin-gonic/gin v1.5.0
・・・
)
このとき、 go.mod と同じディレクトリにいる状態で go get github.com/99designs/gqlgen
を打てば go.mod と同じバージョンでインストールされるのかなーと初めは思ったんですが、
$ go get github.com/99designs/gqlgen
$ gqlgen version
v0.11.3
見事に最新版になってる。
go.mod 内のバージョン情報も v0.11.3 にアップデートされちゃってる。
go.mod
module github.com/tcshy/hoge
go 1.13
require (
github.com/99designs/gqlgen v0.11.3
github.com/aws/aws-sdk-go v1.28.9
github.com/gin-gonic/gin v1.5.0
・・・
)
ってことなんでむやみに go get <パッケージ名>
でインストールすると知らない間にバージョンあがってる、って事がありますね。
もし間違ったバージョンをインストールしてしまったら
一旦パッケージを削除してから、指定のバージョンを再インストールするといいと思います。
パッケージの削除方法としては、以下みたいにGOPATH配下にあるバイナリ(とソースコードもあれば)を手で消す感じらしいです。
( go uninstall パッケージ名
とか使えるようになったらいいですね)
$ cd $GOPATH
$ rm -f bin/gqlgen
$ rm -rf src/github.com/99designs
# rm コマンドに -rf つけると確認されずにファイルが消えるんで、GOPAHTHとかパッケージ名などは各自確認してからコマンド打ってね!