Смотря насколько активно растут и улучшаются пакеты golang, интересно, как решается проблема с версиями пакетов?
Я вижу, что один из способов - хранить сторонние пакеты в папке проекта.
Но что, если я установлю его с go get
?
go get
установит пакет в первый каталог, указанный в GOPATH
(переменная среды, которая может содержать разделенный двоеточиями список каталогов). Вы можете использовать go get -u
для обновления существующих пакетов.
Вы также можете использовать go get -u all
для обновления всех пакетов в вашемGOPATH
Для более крупных проектов может быть целесообразно создать разные GOPATH для каждого проекта, чтобы обновление библиотеки в проекте A не вызывало проблем в проекте B.
Введите, go help gopath
чтобы узнать больше о GOPATH
переменной среды.
go get -u all
извините за воскресение, но на всякий случай кто-то еще искал.go get -u all
больше не работает! Выполнение этой команды в GOPATH, по крайней мере для Go 1.13, выдаст предупреждение: «warning» all «matched no package»Ответ @tux хорош, просто хотел добавить, что вы можете использовать go get для обновления определенного пакета:
источник
Поскольку в этом вопросе упоминаются сторонние библиотеки, а не все пакеты, вы, вероятно, захотите использовать групповые символы.
Вариант использования: я просто хочу обновить все свои пакеты, полученные из Github VCS, тогда вы просто скажете:
Это приведет к обновлению только ваших пакетов github в текущем
$GOPATH
То же самое относится и к VCS, скажем, вы хотите обновить только все пакеты из репозитория ogranizaiton A, поскольку они выпустили исправление, от которого вы зависите:
источник
Вышеуказанные ответы имеют следующие проблемы:
Чтобы избежать этого, сделайте следующее:
go get -d
источник
перейти 1.13
(exec из корневого каталога модуля)
Обновить указанные зависимости:
Обновите все прямые и косвенные зависимости до последних незначительных или исправлений (предварительные выпуски игнорируются):
Ссылка:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get
источник
Чтобы указать версии или зафиксировать:
Смотрите https://github.com/golang/go/wiki/Modules#daily-workflow
источник
Перейти к пути и введите
Это обновит все требуемые пакеты.
источник
go get -u ./...
(3 точки)