# 日報(2021-03-12) go module 配下で github の private repository を import しようとして一日はまる
# go version
go version go1.15.6 linux/arm
# はじめに
掲題の通りなのですが、バージョン間での変更などの影響をうけててエラーメッセージのサイトにでてる手順でも、いろいろな人のブログの手順でも、はては Learning Go の Chapter 9 (opens new window) の手順でも成功せず、一日はまってしましました
# このバージョンで自分が成功した手順
github の personal access token を作る
これは皆様の手順と同じなので省略.netrc ファイルをつくる
これも省略、こんなファイルですよね
machine github.com login ユーザー名 password パーソナルアクセストークン
- GOPRIVATE の設定 これがわからずハマっていました。あるバージョン(Go1.13?)から go module 配下で package を import しようとすると、import に書いたリポジトリからではなく Google が運用してる Proxy から ダウンロードするようになっているのだそうです。リポジトリが消えてビルドできなくなることを防いでくれている親切からなのだそうですが Google が言うとなんか怪しいです
で、private repository がそんなとこを通してダウンロードできるわけがない(できたら本当に怖いです)ので、proxy を使わないように設定しないといけないです
設定は環境変数 GOPRIVATE
を使って例えば GOPRIVATE=github.com/UedaTakeyuki/user
みたいにウエダさんとこの user みたいに指定したり、GOPRIVATE=github.com/UedaTakeyuki/*
みたいにウエダさんとこのリポジトリは全部 みたいに設定しておくと、proxy をつかわないでダウンロードしてくれます
環境変数を直接いじる代わりに go env -w 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
- GOPRIVATE の詳しい解説 (opens new window): ここを見つけられててなかったらまだ解決してなかったとおもいます。素晴らしい記事を残していてくださって本当にありがとうございました
- env のありか (opens new window)
- private repository の変更の反映 (opens new window)