Где находится кеш модуля в Голанге? - PullRequest
0 голосов
/ 01 сентября 2018

Когда я включаю 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
...

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

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

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

0 голосов
/ 01 августа 2019

Кэш модуля хранится в $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 , указывающую на эту изменяемую копию.

0 голосов
/ 01 сентября 2018

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

$GOPATH/pkg/mod
...