Solución de problemas de almacenamiento en caché de recursos

El almacenamiento en caché de recursos acelera la recuperación de paquetes almacenando paquetes descargados (recursos) localmente o en una red, lo que reduce la dependencia de orígenes externos. Esta guía ayuda a los usuarios a tener dificultades con la configuración o operación de caché de recursos.

Para obtener instrucciones de configuración iniciales, consulte la documentación sobre el almacenamiento en caché de recursos.

Diagnóstico de errores de almacenamiento en caché de recursos

vcpkg comprueba las cachés de recursos disponibles antes de descargar artefactos desde Internet. De forma predeterminada, se revierte silenciosamente a orígenes externos si no se encuentra un recurso en la memoria caché.

La opción "x-block-origin" transforma los errores de restauración de recursos en errores de compilación explícitos, lo que impide descargas externas no deseadas. Use esta opción para mejorar la seguridad y hacer que las aciertos de caché que faltan sean más visibles.

Detección de problemas de restauración de recursos

Los problemas de restauración de recursos son silenciosos de forma predeterminada. Se pueden detectar validando la dirección URL de descarga de un artefacto.

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

O un error explícito cuando la x-block-origin opción está habilitada:

error: Failed to download from mirror set

Detección de problemas de carga de recursos

Si un origen de recursos está configurado correctamente, vcpkg emite una advertencia cuando un recurso no se puede cargar en la memoria caché.

warning: failed to store back to mirror

Los artefactos no se cargan ni restauran desde mi caché de recursos

El x-azurl back-end de caché de recursos proporcionado por vcpkg está diseñado para trabajar con contenedores de Azure Storage, puede funcionar con otros servicios de almacenamiento que aceptan solicitudes PUT con autenticación de token simple.

La configuración tiene el formato siguiente:

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

  • <url>: dirección URL base del contenedor
  • <sas>: un token de firma de acceso compartido (SAS) si trabaja con contenedores de Azure Storage; o un parámetro de solicitud de autenticación si se trabaja con otros proveedores.
  • <rw>: (Opcional) configuración de permisos de lectura y escritura

Nota:

Aunque está diseñado para trabajar con contenedores de Azure Storage. El x-azurl back-end se puede usar para los servicios de almacenamiento que aceptan solicitudes en forma de <url>?<sas>.

Por ejemplo, x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite da como resultado una solicitud en forma de https://contoso.com?token=TOKEN_VALUE.

Si el proveedor de caché de recursos no requiere ninguna autorización, el <sas> parámetro puede dejarse vacío. Por ejemplo, x-azurl,https://contoso.com,,readwrite.

Causa 1: La dirección URL no tiene el formato correcto

Al configurar la caché de recursos, asegúrese de incluir https:// como parte de la dirección URL.

Pasos a resolver:

1 - Compruebe que la dirección URL configurada es correcta.

Causa 2: El token de autorización no tiene el formato correcto

vcpkg usa el <sas> parámetro para autenticarse en el proveedor de caché de recursos. Hay varias razones por las que es posible que la autorización no se realice correctamente.

Si usa un contenedor de Azure Storage, el <sas> parámetro debe contener solo el token de SAS sin ningún otro formato de parámetro de solicitud. Por ejemplo:

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

Lea la documentación sobre la generación de tokens de SAS para obtener más información. Asegúrese de que los permisos de lectura y escritura del token generado coinciden con el caso de uso necesario.

Si usa un proveedor diferente, es posible que tenga que dar formato a los parámetros de solicitud correctamente. Por ejemplo, prefijo de un nombre de parámetro antes del valor del token.

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

Pasos a resolver:

1- Comprobación de que el token de autorización no ha expirado

2- Compruebe que el token de autorización tiene los permisos correctos para el contenedor

3: compruebe que el valor del token de autorización es correcto

4- Compruebe que el formato del token de autorización coincide con el formato esperado por el proveedor.

Obtengo un mensaje de error "No se pudo descargar desde el conjunto de reflejos".

Este problema se produce cuando la configuración de almacenamiento en caché de recursos contiene x-block-origin.

El uso x-block-origin de convierte errores para restaurar un recurso de cualquier caché configurada en errores de compilación de paquetes. Evitar posiblemente el acceso no deseado a orígenes externos.

Pasos a resolver:

1- Comprobación de que la red tiene acceso al origen del recurso

2 - Compruebe que el recurso solicitado existe en al menos una de las cachés de activos configuradas. Si el paquete no existe, hay dos métodos para resolver el problema:

  • Deshabilitar x-block-origin temporalmente, para permitir que vcpkg descargue el recurso y cárguelo en una caché de recursos configurada.
  • Cargar el recurso manualmente en una de las memorias caché de recursos configuradas.

3: compruebe que las cachés de recursos están configuradas correctamente, siga los pasos descritos en Artefactos no se están cargando ni restaurando desde mi caché de recursos.

El problema no aparece aquí

Si el problema no aparece aquí, visite nuestro repositorio para crear un nuevo problema.