LoginSignup
12
12

More than 3 years have passed since last update.

Goで指定したバージョンのパッケージをインストールしたい

Posted at

いざ自分がやろうとした際にちょっとだけ迷ったのでメモしときます。

バージョン指定してパッケージをインストール

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とかパッケージ名などは各自確認してからコマンド打ってね!
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12