From 43307074a0879a3683bcc78a6374c23ceec2c94c Mon Sep 17 00:00:00 2001 From: Mikhail Date: Tue, 5 Dec 2023 16:13:28 +0000 Subject: [PATCH] Update file gogetprivate.md --- troubleshooting/gogetprivate.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 troubleshooting/gogetprivate.md diff --git a/troubleshooting/gogetprivate.md b/troubleshooting/gogetprivate.md new file mode 100644 index 0000000..4739e5d --- /dev/null +++ b/troubleshooting/gogetprivate.md @@ -0,0 +1,27 @@ +## Проблема с go get пакета, находящегося в приватном репозитории + +Суть проблемы go get может не дать склонировать из приватного репозитория. К этому могут привести несколько проблем + +### fatal: could not read Password for + +Если произошло такое, знначит go get пытается получить пакет по https, gitlab запрашивает пароль, но go get в авторизацию по паролю не особо умеет, поэтому и выдаёт такую ошибку. + +Что нужно сделать +1) убедиться, что в gitlab добавлены ключи для доступа по ssh. В принципе, по https не получаем пакеты и ничего не клонириуем, чисто ssh. Чисто статистически с ним проблем меньше +2) Если не добавлены, то сгенерировать и добавить. Если устройств, с которых работаете несколько, то лучше добавить отдельный ключ для каждого устройтсва +3) В linux системе отредактировать ~/.gitconfig, добавив правило замены урла или заменив, если такое уже присутствует + +``` +[url "git@penahub.gitlab.yandexcloud.net:"] + insteadOf = https://penahub.gitlab.yandexcloud.net/ +``` + +Что тут происходит - git помнит правила insteadOf в порядке указанном в гитконфиге. При столкновении с урлом, которых подходит под правило insteadOf, он меняет его на url указанный в секции, т.е. просто реплейсит. При этом он использует первое найденное правило, ибо если ты уже нашел способ разрешить проблему, как понять, что нужно искать дальше, если ты тупой кусок кода? + +### Host key verification failed. + +Скорее всего, у вас в системе для ssh используется не та пара, кототрая сохранена в gitlab. Стоит обновить значения. в linux пара ключей находится обычно в ~/.ssh. Советую генерить id_rsa, ибо с другими форматами ключей иногда бывают проблемы, суть которых я ещё не понял + +### Прочие советы + +Ещё бывают проблемы от того, что go get по умолчанию ищет пакеты в общем открытом хранилище, типа sumdb, точнее не помню. Ему надо явно указать, какие репозитории находятся в приватных репозиториях, путём установки переменной окружения GOPRIVATE, где через запятую перечислить пути до репозиториев с используемыми приватными пакетами. И, для удобства, советую добавить экспорт этой переменной окружения в profile или ~/.(shellname)rc \ No newline at end of file