Как получить подробные журналы сборки Go со всеми используемыми пакетами в GOPATH и в режиме «go module»? - PullRequest
0 голосов
/ 26 февраля 2019

У меня ситуация с проектом.

Он ведет себя по-разному, когда я использую модуль go, вне GOPATH и "go get" внутри GOPATH.В обоих случаях сборка идет без ошибок.

Но соединение GPRC ведет себя по-разному.Дает тайм-аут в случае "go mod", отлично работает с "go get".

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

1 Ответ

0 голосов
/ 26 февраля 2019

Для просмотра списка установленных пакетов с использованием GOPATH см. Старую ветку: Как просмотреть список установленных пакетов go

Следующее относится к режиму нового модуля.

Во время компиляции / сборки

Вы можете использовать команду go list -m all для просмотра окончательных версий, которые будут использоваться при сборке для всех прямых и косвенных зависимостей ( source ).Подробнее об этом вы можете прочитать здесь: Модули: выбор версии .

Во время выполнения

Во время выполнения (из вашего приложения) вы можете использовать debug.ReadBuildInfo() функция:

ReadBuildInfo возвращает информацию о сборке, встроенную в исполняемый двоичный файл.Информация доступна только в двоичных файлах, созданных с поддержкой модулей.

Примечание: debug.ReadBuildInfo() был добавлен только в Go 1.12 (выпущено всего день назад).

Пример получения и печати информации о сборке (рекурсивно).Проще всего выполнить JSON-маршалирование информации о сборке:

bi, ok := debug.ReadBuildInfo()
if !ok {
    fmt.Println("Getting build info failed (not in module mode?)!")
    return
}

enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", "  ")
if err := enc.Encode(bi); err != nil {
    panic(err)
}

Пример вывода

Пример вывода для проекта с одной зависимостью: github.com/globalsign/mgo).

Выполнениеgo list -m all:

mytest
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8

Получение и JSON-маршалинг информации о сборке во время выполнения:

{
  "Path": "mytest",
  "Main": {
    "Path": "mytest",
    "Version": "(devel)",
    "Sum": "",
    "Replace": null
  },
  "Deps": [
    {
      "Path": "github.com/globalsign/mgo",
      "Version": "v0.0.0-20181015135952-eeefdecb41b8",
      "Sum": "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=",
      "Replace": null
    }
  ]
}
...