Go 1.13 より、Go モジュール関連のサポートが強化された。主な機能は以下の2つ。
依存モジュールのミラーリング
Go 1.13 では、モジュールリポジトリのミラーリングサーバーを指定できるようになった。 GOPROXY にミラーリングサーバーの URL を指定することで、指定したサーバーにキャッシュが置かれ、go get などを実行した際にミラーリングサーバーのキャッシュをインストールするようになる。
Go 1.13 での GOPROXY のデフォルト値は以下のようになっている。
GOPROXY="https://proxy.golang.org,direct"
proxy.golang.org は Google が提供するミラーサーバー。 direct を設定した場合、ミラーサーバーを介さず直接リポジトリからインストールする。
もし、一部のモジュールをキャッシュさせたくない場合には、 GOPRIVATE にモジュールリポジトリ URL を設定する。
$ go env -w GOPROXY=github/hoge/fuga
また、ミラーリングそのものを避けたい場合はミラーリングdirect を指定すれば無効化できる。
$ go env -w GOPROXY=direct
モジュールのチェックサム検査機構
Go 1.11 より、 go.sum ファイルに依存パッケージのチェックサム一覧が書かれるようになった。これにより、 go get などでパッケージをインストールした際、ダウンロードされたパッケージのチェックサムと比較することでパッケージの改ざん検出を行う。
Go プロジェクトを新規に作成したとき、 go.sum にはチェックサムはなく、改ざん検出も行えない。これを防ぐため、Go モジュールのチェックサムを保存する DB にチェックサムを問い合わせる。
チェックサム保存先 DB は GOSUMDB に設定する。デフォルト値は GOPROXY 同様公式が提供する DB サーバー URL になる。
GOSUMDB="sum.golang.org"
ただしチェックサム DB の URL を設定していると、 パッケージインストール時に
これはプライベートなリポジトリに Go モジュールを管理している場合などに発生する。そのようなモジュールを扱う場合、 GOPRIVATE にそのリポジトリを設定するか、 GOSUMDB に off を設定する。
$ go env -w GOSUMDB=off
参考文献
Module Mirror and Checksum Database Launched - The Go Blog
Go モジュールのミラーリング・サービス【正式版】 — プログラミング言語 Go | text.Baldanders.info