【Golang】Go 1.13 モジュールミラーリングサーバーとチェックサム DB
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