Résoudre les problèmes de mise en cache des ressources
La mise en cache des ressources accélère la récupération des packages en stockant des packages téléchargés (ressources) localement ou sur un réseau, ce qui réduit la dépendance aux sources externes. Ce guide aide les utilisateurs confrontés à des difficultés liées à la configuration ou à l’opération du cache de ressources.
Pour obtenir des instructions de configuration initiales, reportez-vous à la documentation de mise en cache des ressources.
Diagnostic des erreurs de mise en cache des ressources
vcpkg case activée s mises en cache de ressources disponibles avant de télécharger des artefacts à partir d’Internet. Par défaut, il revient silencieusement aux sources externes si une ressource est introuvable dans le cache.
L’option « x-block-origin » transforme les échecs de restauration des ressources en erreurs de build explicites, ce qui empêche les téléchargements externes inattendus. Utilisez cette option pour améliorer la sécurité et rendre les accès au cache manquants plus visibles.
Détecter les problèmes de restauration des ressources
Les problèmes de restauration des ressources sont silencieux par défaut. Ils peuvent être détectés en validant l’URL de téléchargement d’un artefact.
Downloading 7zip...
https://www.7-zip.org/a/7z2301-extra.7z -> C:\vcpkg\downloads\7z2301-extra.7z
Ou une erreur explicite lorsque l’option x-block-origin
est activée :
error: Failed to download from mirror set
Détecter les problèmes de chargement des ressources
Si une source de ressource est correctement configurée, vcpkg émet un avertissement lorsqu’une ressource ne peut pas être chargée dans le cache.
warning: failed to store back to mirror
Les artefacts ne sont pas chargés ou restaurés à partir de mon cache de ressources
Le x-azurl
back-end de cache de ressources fourni par vcpkg est conçu pour fonctionner avec Stockage Azure Conteneurs, il peut fonctionner avec d’autres services de stockage qui acceptent les demandes PUT avec l’authentification par jeton simple.
La configuration a le format suivant :
x-azurl,<url>,<sas>[,<rw>]
<url>
: URL de base du conteneur<sas>
: jeton SAP (Shared Access Signature) si vous utilisez des conteneurs Stockage Azure ; ou un paramètre de demande d’authentification si vous travaillez avec d’autres fournisseurs.<rw>
: (Facultatif) Configuration de l’autorisation de lecture/écriture
Remarque
Bien qu’il soit conçu pour fonctionner avec des conteneurs Stockage Azure. Le x-azurl
back-end peut être utilisé pour les services de stockage qui acceptent les demandes sous la forme .<url>?<sas>
Par exemple, x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite
génère une demande sous la forme .https://contoso.com?token=TOKEN_VALUE
Si votre fournisseur de cache de ressources ne nécessite aucune autorisation, le <sas>
paramètre peut être laissé vide. Par exemple : x-azurl,https://contoso.com,,readwrite
.
Cause 1 : L’URL n’est pas correctement mise en forme
Lors de la configuration de votre cache de ressources, assurez-vous que vous incluez https://
dans le cadre de l’URL.
Étapes de résolution :
1 - Vérifiez que l’URL configurée est correcte.
Cause 2 : Le jeton d’autorisation n’est pas correctement mis en forme
vcpkg utilise le paramètre pour s’authentifier <sas>
auprès de votre fournisseur de cache de ressources.
Il existe diverses raisons pour lesquelles l’autorisation peut ne pas réussir.
Si vous utilisez un conteneur Stockage Azure, le <sas>
paramètre doit contenir uniquement le jeton SAP sans aucune autre mise en forme de paramètre de requête. Par exemple :
x-azurl,https://mystorageaccount.blob.core.windows.net/mystoragecontainer,sasvaluehere,readwrite
Pour plus d’informations, consultez la documentation sur la génération de jetons SAP. Vérifiez que les autorisations de lecture et d’écriture du jeton généré correspondent à votre cas d’usage requis.
Si vous utilisez un autre fournisseur, vous devrez peut-être mettre en forme correctement les paramètres de requête. Par exemple, le préfixe d’un nom de paramètre avant la valeur du jeton.
x-azurl,https://contoso.com,authorization=tokenvaluehere,readwrite
.
Étapes de résolution :
1 - Vérifier que le jeton d’autorisation n’a pas expiré
2 - Vérifier que le jeton d’autorisation dispose des autorisations appropriées pour votre conteneur
3 - Vérifier que la valeur du jeton d’autorisation est correcte
4 - Vérifiez que le format du jeton d’autorisation correspond au format attendu par votre fournisseur.
J’obtiens un message d’erreur « Échec du téléchargement à partir de miroir set »
Ce problème se produit lorsque la configuration de mise en cache des ressources contient x-block-origin
.
L’utilisation x-block-origin
transforme les échecs de restauration d’une ressource à partir de n’importe quel cache configuré en échecs de génération de package. Empêcher l’accès potentiellement indésirable aux sources externes.
Étapes de résolution :
1 - Vérifier que votre réseau a accès à la source de ressource
2 - Vérifiez que la ressource demandée existe dans au moins l’un des caches de ressources configurés. Si le package n’existe pas, il existe deux méthodes pour résoudre le problème :
x-block-origin
Désactivation temporaire, pour autoriser vcpkg à télécharger l’élément multimédia et à le charger dans un cache de ressources configuré.- Chargement manuel de la ressource dans l’un des caches de ressources configurés.
3 - Vérifiez que les caches de ressources sont correctement configurés, suivez les étapes décrites dans Artefacts qui ne sont pas chargées ou restaurées à partir de mon cache de ressources.
Le problème n’est pas répertorié ici
Si votre problème n’est pas répertorié ici, visitez notre référentiel pour créer un problème.