Condividi tramite


Risolvere i problemi di memorizzazione nella cache degli asset

La memorizzazione nella cache degli asset accelera il recupero dei pacchetti archiviando i pacchetti scaricati (asset) in locale o in una rete, riducendo la dipendenza da origini esterne. Questa guida aiuta gli utenti a riscontrare difficoltà con la configurazione o l'operazione della cache degli asset.

Per istruzioni di configurazione iniziali, vedere la documentazione sulla memorizzazione nella cache degli asset.

Diagnosi degli errori di memorizzazione nella cache degli asset

vcpkg controlla le cache degli asset disponibili prima di scaricare elementi da Internet. Per impostazione predefinita, esegue automaticamente il fallback alle origini esterne se non viene trovato un asset nella cache.

L'opzione 'x-block-origin'' trasforma gli errori di ripristino degli asset in errori di compilazione espliciti, impedendo download esterni imprevisti. Usare questa opzione per migliorare la sicurezza e rendere più visibili i riscontri nella cache mancanti.

Rilevare i problemi di ripristino degli asset

I problemi di ripristino degli asset sono invisibile all'utente per impostazione predefinita. Possono essere rilevati convalidando l'URL di download di un artefatto.

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

Oppure un errore esplicito quando l'opzione x-block-origin è abilitata:

error: Failed to download from mirror set

Rilevare i problemi di caricamento degli asset

Se un'origine asset è configurata correttamente, vcpkg genera un avviso quando non è possibile caricare un asset nella cache.

warning: failed to store back to mirror

Gli artefatti non vengono caricati o ripristinati dalla cache degli asset

Il x-azurl back-end della cache degli asset fornito da vcpkg è progettato per funzionare con i contenitori Archiviazione di Azure, può funzionare con altri servizi di archiviazione che accettano richieste PUT con autenticazione token semplice.

La configurazione ha il formato seguente:

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

  • <url>: URL di base del contenitore
  • <sas>: token di firma di accesso condiviso (SAS) se si usa Archiviazione di Azure contenitori o un parametro di richiesta di autenticazione se si lavora con altri provider.
  • <rw>: (Facoltativo) Configurazione delle autorizzazioni di lettura/scrittura

Nota

Sebbene sia progettato per funzionare con i contenitori Archiviazione di Azure. Il x-azurl back-end può essere usato per i servizi di archiviazione che accettano richieste sotto forma di <url>?<sas>.

Ad esempio, x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite viene restituita una richiesta sotto forma di https://contoso.com?token=TOKEN_VALUE.

Se il provider di cache degli asset non richiede alcuna autorizzazione, il <sas> parametro può essere lasciato vuoto. Ad esempio, x-azurl,https://contoso.com,,readwrite.

Causa 1: L'URL non è formattato correttamente

Quando si configura la cache degli asset, assicurarsi di includere https:// come parte dell'URL.

Procedura di risoluzione:

1 - Verificare che l'URL configurato sia corretto.

Causa 2: Il token di autorizzazione non è formattato correttamente

vcpkg usa il parametro per eseguire l'autenticazione <sas> al provider di cache degli asset. Esistono diversi motivi per cui l'autorizzazione potrebbe non riuscire.

Se si usa un contenitore Archiviazione di Azure, il <sas> parametro deve contenere solo il token di firma di accesso condiviso senza la formattazione di altri parametri della richiesta. Ad esempio:

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

Per altre informazioni, vedere la documentazione sulla generazione di token di firma di accesso condiviso. Assicurarsi che le autorizzazioni di lettura e scrittura del token generato corrispondano al caso d'uso richiesto.

Se si usa un provider diverso, potrebbe essere necessario formattare correttamente i parametri della richiesta. Ad esempio, anteponendo un nome di parametro prima del valore del token.

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

Procedura di risoluzione:

1 - Verificare che il token di autorizzazione non sia scaduto

2 - Verificare che il token di autorizzazione disponga delle autorizzazioni corrette per il contenitore

3 - Verificare che il valore del token di autorizzazione sia corretto

4 - Verificare che il formato del token di autorizzazione corrisponda al formato previsto dal provider.

Viene visualizzato un messaggio di errore "Impossibile scaricare dal set di mirror"

Questo problema si verifica quando la configurazione della memorizzazione nella cache degli asset contiene x-block-origin.

L'uso x-block-origin di trasforma gli errori di ripristino di un asset da qualsiasi cache configurata in errori di compilazione del pacchetto. Impedire l'accesso potenzialmente indesiderato a origini esterne.

Procedura di risoluzione:

1 - Verificare che la rete abbia accesso all'origine dell'asset

2 - Verificare che l'asset richiesto esista in almeno una delle cache degli asset configurati. Se il pacchetto non esiste esistono due metodi per risolvere il problema:

  • Disabilitando x-block-origin temporaneamente, per consentire a vcpkg di scaricare l'asset e caricarlo in una cache degli asset configurata.
  • Caricamento manuale dell'asset in una delle cache degli asset configurate.

3 - Verificare che le cache degli asset siano configurate correttamente, seguire la procedura descritta in Elementi non caricati o ripristinati dalla cache degli asset.

Il problema non è elencato qui

Se il problema non è elencato qui, visitare il repository per creare un nuovo problema.