一度go getしたパッケージを更新(アップデート)する方法
golangを使用していて稀にあるのですが、ローカルにあるパッケージが古い場合があります。
そんなときにgo getしたパッケージを漏れなく全部削除してもう一度最新のパッケージをgo getして・・・なんてことをするのか?
と思ったのですが、そんなことはしなくていいみたいです。
-uオプション
go getには様々なオプションがあります。
その中の1つに「u」オプションが存在します。
この「u」オプションがどんなものかと言うと、
% go get --help usage: get [-d] [-f] [-fix] [-insecure] [-t] [-u] [build flags] [packages] ・・・ The -u flag instructs get to use the network to update the named packages and their dependencies. By default, get uses the network to check out missing packages but does not use it to look for updates to existing packages. ・・・
google翻訳にかけると、
-uフラグは、指定されたパッケージを更新するためにネットワークを使用するように指示します。 およびそれらの依存関係。デフォルトでは、getはネットワークを使ってチェックアウトします パッケージを見つけられませんが、既存のパッケージの更新を探すためには使用しません。
なんかパッケージを更新してくれるっぽい!
ということで試してみました。
試してみる
今回は昔にgo getしたdepパッケージを対象にしてみました。
とりあえず現在の状況を確認します。
% ls -l ~/.go/bin/dep -rwxr-xr-x 1 xxx wheel 9776276 2 24 2017 /Users/xxx/.go/bin/dep
日付を確認すると、2017年の2月24日くらいにgo getしたようです。
もう覚えてないですが・・・
次に-uオプションを使ってdepパッケージを更新します。
% go get -u github.com/golang/dep/cmd/dep
更新が完了したので、再度depパッケージを確認します。
% ls -l ~/.go/bin/dep -rwxr-xr-x 1 xxx wheel 12307540 12 27 00:38 /Users/xxx/.go/bin/dep
2017年12月27日になっています!
無事に更新されているようです!
まとめ
一度go getしたパッケージを更新したい場合は-uオプションを使いましょう。
おわり!!
というか、だいたいのREADMEには
go get -u xxx
って書いてますよね笑