# 日報(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) の手順でも成功せず、一日はまってしましました

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

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

  2. .netrc ファイルをつくる
    これも省略、こんなファイルですよね

machine github.com login ユーザー名 password パーソナルアクセストークン
  1. 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


Last Updated: 2021/7/2 11:48:41