Посмотрите, как активно растут пакеты golang и улучшаются. Интересно, как решена проблема с версиями пакетов?
Я вижу, что один из способов - хранить сторонние пакеты в папке проекта.
Но что, если я установлю его с помощью go get
?
Посмотрите, как активно растут пакеты golang и улучшаются. Интересно, как решена проблема с версиями пакетов?
Я вижу, что один из способов - хранить сторонние пакеты в папке проекта.
Но что, если я установлю его с помощью go get
?
go get
установит пакет в первый каталог, указанный в GOPATH
(переменная среды, которая может содержать список каталогов, разделенных двоеточиями). Вы можете использовать go get -u
для обновления существующих пакетов.
Вы также можете использовать go get -u all
для обновления всех пакетов в GOPATH
Для более крупных проектов было бы разумно создать разные GOPATH для каждого проекта, так что обновление библиотеки в проекте A не вызовет проблем в проекте B.
Введите go help gopath
, чтобы узнать больше о переменной среды GOPATH
.
Ответ @tux велик, просто хотел добавить, что вы можете использовать go для обновления определенного пакета:
go get -u full_package_name
В связи с тем, что упомянутые сторонние библиотеки, а не все, вы, вероятно, захотите вернуться к использованию подстановочных знаков.
Вариант использования: я просто хочу обновить все мои пакеты, полученные из VCS Github, тогда вы просто скажете:
go get -u github.com/... // ('...' being the wildcard).
Это будет продолжаться и обновлять ваши пакеты github только в текущем $GOPATH
То же самое относится и к VCS, скажем, вы хотите только обновить все пакеты из ogranizaiton A repo, так как они выпустили исправление, от которого вы зависите:
go get -u github.com/orgA/...
Вышеуказанные ответы имеют следующие проблемы:
Чтобы избежать этого, выполните следующие действия:
go get -d
Перейдите по пути и введите
go get -u ./..
Это обновит все требуемые пакеты.