go1.17からgo getでのパッケージ導入が非推奨になった
go1.17から go get
でのパッケージインストールが非推奨になりました。代わりに go install
を使えということなので簡単に調査しました。
go get
の代わりに go install
を使う
go
get
prints a deprecation warning when installing commands outside the main module (without the-d
flag).go
install
cmd@version
should be used instead to install a command at a specific version, using a suffix like@latest
or@v1.2.3
. In Go 1.18, the-d
flag will always be enabled, andgo
get
will only be used to change dependencies ingo.mod
.
go get
でメインモジュール外にパッケージをインストールする際に警告が出るようになりました。
-d
オプションをつけて実行すれば引き続き go get
でもOKですが、1.18から -d
オプションも使えなくなるようです。
そのため、代わりに go install
を使えとのこと。
go get
と go install
の使い分け
go get
が完全に使えなくなるわけではないようです。
モジュール内で管理したいパッケージについてはこれまで通り go get
。
go install
はモジュール外で使いたいパッケージのインストールに使うことになるとのことです。
go get
⇄ go install
go install
の使い方は下記のような感じです。
# go getの場合
go get golang.org/x/tools/gopls
# go installの場合
go install golang.org/x/tools/gopls@latest
3点リーダ(…)で、特定のディレクトリ配下のツールをまとめてインストールできたわけですが、それもこれまで通り使えます。
# go getの場合
go get golang.org/x/tools/cmd/...
# go installの場合
go install golang.org/x/tools/cmd/...@latest