日報(2021-03-12) go module 配下で github の private repository を import しようとして一日はまる

go version

go version go1.15.6 linux/arm

はじめに

掲題の通りなのですが、バージョン間での変更などの影響をうけててエラーメッセージのサイトにでてる手順でも、いろいろな人のブログの手順でも、はては Learning Go の Chapter 9 の手順でも成功せず、一日はまってしましました

このバージョンで自分が成功した手順

  1. github の personal access token を作る これは皆様の手順と同じなので省略

  2. .netrc ファイルをつくる これも省略

  3. GOPRIVATE の設定 これがわからずハマっていました。あるバージョン(Go1.13?)から go module 配下で package を import しようとすると、import に書いたリポジトリからではなく Google が運用してる Proxy から ダウンロードするようになっているのだそうです。リポジトリが消えてビルドできなくなることを防いでくれているのだそうですがなんか怪しいです

で、private repository がそんなとこを通してダウンロードできるわけがない(できたら本当に怖いです)ので、proxy を使わないように設定しないといけないです

設定は環境変数 GOPRIVATE を使って例えば GOPRIVATE=github.com/UedaTakeyuki/user みたいにウエダさんとこの user みたいに指定したり、GOPRIVATE=github.com/UedaTakeyuki/* みたいにウエダさんとこのリポジトリは全部 みたいに設定しておくと、proxy をつかわないでダウンロードしてくれます

環境変数を直接いじる代わりに go env -w GOPRIVATE=GOPRIVATE=github.com/UedaTakeyuki/* みたいに go env コマンドで登録すると楽です。内容は /home/username/.config/go/env に登録されます

private リポジトリの変更の反映

private repository を update して go get -u しても、import 先に反映されません。go get github.com/UedaTakeyuki/パッケージ名@HEAD で反映されました

referencese

Last Updated: 3/12/2021, 11:40:24 AM