Update file gogetprivate.md
This commit is contained in:
parent
cbe4766ac6
commit
43307074a0
27
troubleshooting/gogetprivate.md
Normal file
27
troubleshooting/gogetprivate.md
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user