пятница, 19 марта 2021 г.

Модули в Golang: переменные среды

Поведение модуля в команде go можно настроить с помощью переменных среды, перечисленных ниже. В этот список входят только переменные среды, относящиеся к модулю.

GO111MODULE

Управляет запуском команды go в режиме с поддержкой модуля или в режиме GOPATH. Распознает три значения:

  • off: команда go игнорирует файлы go.mod и работает в режиме GOPATH.
  • on (или не установлен): команда go выполняется в режиме с учетом модуля, даже если файл go.mod отсутствует.
  • auto: команда go запускается в режиме с учетом модуля, если файл go.mod присутствует в текущем или любом родительском каталоге. В Go 1.15 и ниже это было по умолчанию.

GOMODCACHE

Каталог, в котором команда go будет хранить загруженные модули и связанные файлы.

Если GOMODCACHE не установлен, по умолчанию используется $GOPATH/pkg/mod.

GOINSECURE

Разделенный запятыми список glob шаблонов (в синтаксисе Go path.Match) префиксов пути модуля, которые всегда могут быть получены небезопасным образом. Применяется только к зависимостям, которые извлекаются напрямую.

В отличие от флага -insecure при go get, GOINSECURE не отключает проверку базы данных контрольной суммы модуля. Для этого можно использовать GOPRIVATE или GONOSUMDB.

GONOPROXY

Разделенный запятыми список glob шаблонов (в синтаксисе Go path.Match) префиксов путей к модулям, которые всегда следует получать непосредственно из репозиториев системы контроля версий, а не из прокси-серверов модулей.

Если GONOPROXY не установлен, по умолчанию используется GOPRIVATE.

GONOSUMDB

Список разделенных запятыми glob шаблонов (в синтаксисе Go path.Match) префиксов путей модулей, для которых go не должен проверять контрольные суммы с помощью базы данных контрольных сумм.

Если GONOSUMDB не установлен, по умолчанию используется GOPRIVATE.

GOPATH

В режиме GOPATH переменная GOPATH представляет собой список каталогов, которые могут содержать код Go.

В режиме с поддержкой модулей кеш модуля хранится в подкаталоге pkg/mod первого каталога GOPATH. Исходный код модуля вне кеша может храниться в любом каталоге.

Если GOPATH не установлен, по умолчанию используется подкаталог go домашнего каталога пользователя.

GOPRIVATE

Список разделенных запятыми glob шаблонов (в синтаксисе Go path.Match) префиксов путей к модулям, которые следует считать частными. GOPRIVATE - это значение по умолчанию для GONOPROXY и GONOSUMDB. GOPRIVATE также определяет, считается ли модуль частным для GOVCS.

GOPROXY

Список URL-адресов прокси модуля, разделенных запятыми (,) или вертикальными чертами (|). Когда команда go ищет информацию о модуле, она последовательно связывается с каждым прокси в списке, пока не получит успешный ответ или ошибку терминала. Прокси-сервер может ответить статусом 404 (Not Found) или 410 (Gone), чтобы указать, что модуль недоступен на этом сервере.

Резервное поведение при ошибке команды go определяется символами-разделителями между URL-адресами. Если после URL-адреса прокси-сервера стоит запятая, команда go возвращается к следующему URL-адресу после ошибки 404 или 410; все остальные ошибки считаются окончательными. Если за URL-адресом прокси-сервера следует канал (|), команда go возвращается к следующему источнику после любой ошибки, включая ошибки, не связанные с HTTP, такие как таймауты.

URL-адреса GOPROXY могут иметь схемы https, http или file. Если URL-адрес не имеет схемы, предполагается https. Кеш модуля может использоваться напрямую как файловый прокси:

GOPROXY=file://$(go env GOMODCACHE)/cache/download

Вместо URL прокси можно использовать два ключевых слова:

  • off: запрещает загрузку модулей из любого источника.
  • direct: загрузка напрямую из репозиториев системы контроля версий вместо использования прокси-сервера модуля.

GOPROXY по умолчанию использует https://proxy.golang.org,direct. В этой конфигурации команда go сначала связывается с зеркалом модуля Go, запущенным Google, а затем возвращается к прямому подключению, если зеркало не имеет модуля. Переменные среды GOPRIVATE и GONOPROXY могут быть установлены для предотвращения загрузки определенных модулей с использованием прокси.

GOSUMDB

Определяет имя используемой базы данных контрольных сумм и, при необходимости, ее открытый ключ и URL. Например:

GOSUMDB="sum.golang.org"
GOSUMDB="sum.golang.org+<publickey>"
GOSUMDB="sum.golang.org+<publickey> https://sum.golang.org

Команде go известен открытый ключ sum.golang.org, а также то, что имя sum.golang.google.cn (доступно на территории материкового Китая) подключается к базе данных sum.golang.org; использование любой другой базы данных требует явного указания открытого ключа. По умолчанию используется URL-адрес https://, за которым следует имя базы данных.

GOSUMDB по умолчанию использует sum.golang.org, базу данных контрольных сумм Go, управляемую Google.

Если GOSUMDB выключен или go get вызывается с флагом -insecure, база данных контрольных сумм не запрашивается, и все нераспознанные модули принимаются, за счет отказа от гарантии безопасности проверенных повторяющихся загрузок для всех модулей. Лучший способ обойти базу данных контрольных сумм для определенных модулей - использовать переменные среды GOPRIVATE или GONOSUMDB.

GOVCS

Управляет набором инструментов управления версиями, которые команда go может использовать для загрузки общедоступных и частных модулей (определяемых тем, соответствуют ли их пути шаблону в GOPRIVATE) или других модулей, соответствующих glob шаблону.

Если GOVCS не установлен или модуль не соответствует какому-либо шаблону в GOVCS, команда go может использовать git и hg для общедоступного модуля или любой известный инструмент контроля версий для частного модуля. Конкретно, команда go действует так, как если бы GOVCS был установлен на:

public:git|hg,private:all


Читайте также:


Комментариев нет:

Отправить комментарий