Для Вопроса 2 я пробовал несколько раз сегодня. Если вы хотите безопасно создать приватный пакет, самое важное, что вы должны сделать, - это установить GOPRIVATE
ДО того, как вы соберете свой пакет. И GONOPROXY
, GONOSUMDB
будут автоматически установлены равными GOPRIVATE
. Теперь вы можете записать код и git push
в частный репозиторий и попытаться go get
его, и у вас произойдет сбой, и вы увидите сообщение об ошибке, подобное этому:
fatal: не удалось прочитать имя пользователя для 'https://github.com': запросы терминала отключены. Убедитесь, что путь импорта был введен правильно. Если это частный репозиторий, см. https://golang.org/doc/faq#git_https для получения дополнительной информации.
Ссылка показывает нам, что мы должны использовать https
ссылку с вашим именем пользователя / паролем или просто заменить Ваша https-ссылка со ссылкой s sh, если вы загрузите ключ в удаленную ropo. После этого вам удастся go get
получить его с вашего исходного адреса (имя вашего пакета), но НЕ ПРОКСИ.
Кроме того, давайте удалим весь кэш go модуля, используя go clean -modcache
и установить GOPRIVATE=""
. Я проверю, был ли загружен наш приватный пакет на прокси.
case 1: установите GOPROXY="https://goproxy.io"
или другой прокси, а затем go get
приватный пакет. вы столкнетесь с 404 Not Found
, который показывает, что вы ничего не находите в прокси (это означало, что ничего не было кэшировано / сохранено в прокси).
case 2: установите GOPROXY="direct"
(используйте прямой адрес вашего имени pacakage ), а затем go get
личный пакет. вы увидите сообщение об ошибке, подобное этому:
проверка {PACKAGENAME}: {PACKAGENAME}: инициализация sumweb.Conn: проверка дерева # {ID}: получение https://sum.golang.org/tile/8/2/000.p/11: набор tcp {IP}: {PORT}: время ожидания ввода-вывода.
Функция go get
попытается проверить контрольную сумму из базы данных golang .org с вашим пакетом (я не могу связать на сервер Google напрямую, поэтому он показывает ошибку тайм-аута / я думаю, вы получите 404, если вы можете связаться с сервером Google). Это показывает, что если мы попытаемся go get
приватный пакет без установки GOPRIVATE
, вы потерпите неудачу, потому что вы не можете пройти проверку.
Предложение: Если вы хотите создать свой личный go package, вы должны сначала установить GOPRIVATE
и убедиться, что он достаточно широк, чтобы ВКЛЮЧИТЬ название вашего пакета.
Спасибо всем людям за чтение и ответ на этот вопрос.