第2の人生の構築ログ

自分の好きなことをやりつつ、インカムもしっかりと。FIRA60 (Financial Independence, Retire Around 60) の実現を目指します。SE を生業としていますが、自分でプログラミングしながら自分が欲しいと思うアプリケーションを作ることが楽しみです。旅行と温泉、音楽と読書は欠かすことができません。

【Go言語】Bitbucket / Github の private リポジトリを Go Get する〜その2 ("410 Gone エラー")

Bitbucket / Github の private リポジトリを Go Get する方法を以前書いていたのですが、これだけでは現状失敗することに先日気付きました。

www.morelife.work

上記の設定を行っていたとしても、現状以下のような 410 Gone エラーに遭遇します。 以下は bitbucket の例ですが、github も同様でした。

$ go get -u -v bitbucket.org/drtaka/private_repository/package
go: finding bitbucket.org/drtaka/private_repository latest
go: finding bitbucket.org/drtaka/private_repository/package latest
go: downloading bitbucket.org/drtaka/private_repository v0.0.0-20200509073455-da8936b726a4
verifying bitbucket.org/drtaka/private_repository@v0.0.0-20200509073455-da8936b726a4: bitbucket.org/drtaka/private_repository@v0.0.0-20200509073455-da8936b726a4: reading https://sum.golang.org/lookup/bitbucket.org/drtaka/private_repository@v0.0.0-20200509073455-da8936b726a4: 410 Gone

環境は以下の通りです。

$ go version
go version go1.13.8 darwin/amd64

410 Gone の HTTP ステータスって分かり難いですよね・・・

developer.mozilla.org

当初、この事象への対処が全くわからなかったのですが、とりあえず暫定的な対応として以下が有効である確認がとれました。

github.com

$ export GO111MODULE=on
$ export GOPROXY=direct
$ export GOSUMDB=off

GO111MODULE の指定は go1.13 1.16 以降(※)であればいらないはずです。GOPROXYGOSUMDB に関しては、"Go モジュールのミラーリング・サービス【正式版】 — プログラミング言語 Go | text.Baldanders.info"に説明があります。

※ 1.16 からGO111MODULEの設定はデフォルトが on ですね。

text.baldanders.info

とりあえず前回の設定にプラスして上記(最低でもGOPROXY=directGOSUMDB=offは必須)の設定を入れておけば、410 Gone を回避でき、private リポジトリでも Go Get が可能です。