Поделиться через


Устранение неполадок с кэшированием ресурсов

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

Инструкции по начальной настройке см. в документации по кэшированию ресурсов.

Диагностика ошибок кэширования активов

vcpkg проверка доступные кэши ресурсов перед скачиванием артефактов из Интернета. По умолчанию он автоматически возвращается к внешним источникам, если ресурс не найден в кэше.

Параметр x-block-origin преобразует сбои восстановления ресурсов в явные ошибки сборки, предотвращая непреднамеренные внешние загрузки. Используйте этот параметр, чтобы повысить безопасность и сделать отсутствующий кэш более видимым.

Обнаружение проблем с восстановлением ресурсов

Проблемы восстановления активов по умолчанию молчат. Их можно обнаружить, проверяя URL-адрес скачивания артефакта.

Downloading 7zip...
https://www.7-zip.org/a/7z2301-extra.7z -> C:\vcpkg\downloads\7z2301-extra.7z

Или явная ошибка при x-block-origin включении параметра:

error: Failed to download from mirror set

Обнаружение проблем с отправкой ресурсов

Если источник ресурса настроен правильно, vcpkg выдает предупреждение, когда ресурс не может быть отправлен в кэш.

warning: failed to store back to mirror

Артефакты не загружаются или не восстанавливаются из кэша ресурсов

Серверная x-azurl часть кэша ресурсов, предоставляемая vcpkg, предназначена для работы с контейнерами служба хранилища Azure, она может работать с другими службами хранилища, которые принимают запросы PUT с простой проверкой подлинности маркера.

Конфигурация имеет следующий формат:

x-azurl,<url>,<sas>[,<rw>]

  • <url>: базовый URL-адрес контейнера
  • <sas>: маркер подписанного URL-адреса (SAS) при работе с служба хранилища Azure контейнерами; или параметр запроса проверки подлинности при работе с другими поставщиками.
  • <rw>: (необязательно) конфигурация разрешений на чтение и запись

Примечание.

Хотя он предназначен для работы с служба хранилища Azure контейнерами. Серверная x-azurl часть может использоваться для служб хранилища, которые принимают запросы в виде <url>?<sas>.

Например, x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite результаты запроса в виде https://contoso.com?token=TOKEN_VALUE.

Если поставщик кэша ресурсов не требует авторизации, <sas> параметр можно оставить пустым. Например, x-azurl,https://contoso.com,,readwrite.

Причина 1. URL-адрес неправильно отформатирован

При настройке кэша ресурсов убедитесь, что вы включаете https:// его в url-адрес.

Действия по устранению:

1. Убедитесь, что настроенный URL-адрес правильный.

Причина 2. Маркер авторизации неправильно отформатирован

vcpkg использует <sas> параметр для проверки подлинности в поставщике кэша ресурсов. Существует множество причин, по которым авторизация может завершиться ошибкой.

Если вы используете контейнер служба хранилища Azure, <sas> параметр должен содержать только маркер SAS без форматирования других параметров запроса. Например:

x-azurl,https://mystorageaccount.blob.core.windows.net/mystoragecontainer,sasvaluehere,readwrite

Дополнительные сведения см. в документации по созданию маркеров SAS. Убедитесь, что разрешения на чтение и запись созданного маркера соответствуют требуемому варианту использования.

Если вы используете другой поставщик, может потребоваться правильно отформатировать параметры запроса. Например, префикс имени параметра перед значением маркера.

x-azurl,https://contoso.com,authorization=tokenvaluehere,readwrite.

Действия по устранению:

1. Убедитесь, что маркер авторизации не истек

2. Убедитесь, что маркер авторизации имеет правильные разрешения для контейнера.

3. Убедитесь, что значение маркера авторизации правильно

4. Убедитесь, что формат маркера авторизации соответствует ожидаемому формату поставщика.

Сообщение об ошибке "Не удалось скачать из зеркало set"

Эта проблема возникает, когда конфигурация кэширования активов x-block-originсодержится.

Использование x-block-origin превратит сбои для восстановления ресурса из любого настроенного кэша в сбои сборки пакета. Предотвращение возможного нежелательного доступа к внешним источникам.

Действия по устранению:

1. Убедитесь, что у вашей сети есть доступ к источнику ресурса

2. Убедитесь, что запрошенный ресурс существует по крайней мере в одном из настроенных кэшей ресурсов. Если пакет не существует, существует два метода для устранения проблемы:

  • x-block-origin Временное отключение, чтобы разрешить vcpkg скачать ресурс и отправить его в настроенный кэш ресурсов.
  • Отправка ресурса вручную в один из настроенных кэшей ресурсов.

3. Убедитесь, что кэши ресурсов настроены правильно, выполните действия, описанные в разделе "Артефакты", не загружаются или восстанавливаются из кэша ресурсов.

Проблема не указана здесь

Если проблема не указана здесь, посетите наш репозиторий , чтобы создать новую проблему.