Где находится кеш модуля в Голанге?

Когда я включаю gomodules и собираю свою программу go, загружаются необходимые пакеты.

Но я могу найти их в $GOPATH/src/ или в $GOPATH/src/mod.

Где они хранятся?

export GO111MODULE=on
go mod init
go build main.go 
go: finding github.com/sirupsen/logrus v1.0.6
go: downloading github.com/sirupsen/logrus v1.0.6
...

6 ответов

Решение

Для Go 1.11 они хранятся в

$GOPATH/pkg/mod

Запустите это в терминале

      go env GOMODCACHE

Чтобы определить расположение кеша, вы можете использовать go env:

      go env|grep CACHE

Чтобы очистить кеши, используйте go clean -modcache или же go clean -cache в зависимости от типа очищаемого кеша.

Я на Macos 10.13.6, использую go1.11 darwin/amd64 а также echo $GOPATH пустой.

Я нашел свои модули в $HOME/go/pkg/mod

Кеш модуля хранится в $GOPATH/pkg/mod, или $HOME/go/pkg/mod если $GOPATH не установлен.

Примечание: как правило, кеш модуля доступен только для чтения и предназначен для использования в качестве неизменяемого кеша. Таким образом, вам никогда не следует пытаться редактировать что-либо там, а также запускатьgo команды из кеша.

Кеш модуля содержит zip-файлы, распакованный исходный код модуля, а также кеш VCS (если не используется прокси). Кэш часто содержит несколько версий одной зависимости.

Если вы хотите проверить код зависимости в кеше модуля, вы можете cd прямо в расположение распакованной зависимости через:

cd $(go list -f '{{.Dir}}' -m github.com/foo/bar)

Это запрашивает список перехода, чтобы сообщить о расположении каталога модуляgithub.com/foo/bar в кеш-памяти модуля, по умолчанию используется та версия, которую вы в настоящее время используете в своем текущем модуле.

Поскольку предполагается, что кеш является неизменяемым, возникает связанный с этим вопрос, как вы редактируете зависимость (например, если вы хотите добавить журнал отладки или, возможно, при подготовке к отправке исправления восходящего потока для зависимости). Распространенным решением на этом этапе является использование gohack, который создает изменяемую копию зависимости (по умолчанию в$HOME/gohack, но местоположение контролируется $GOHACK переменная). gohackтакже устанавливает ваш текущий go.modфайл, чтобы иметь директиву replace, указывающую на эту изменяемую копию.

Если вы хотите очистить кеш, есть команда go clean --modcache

Если вам просто нужно обновить некоторую зависимость, вы, вероятно, захотите очистить информацию об этой зависимости из

  • go.mod
  • go.sum
  • vendor / modules.txt
Другие вопросы по тегам