Freigeben über


Behandeln von Problemen beim Zwischenspeichern von Ressourcen

Die Zwischenspeicherung von Ressourcen beschleunigt den Paketabruf, indem heruntergeladene Pakete (Ressourcen) lokal oder in einem Netzwerk gespeichert werden, wodurch die Abhängigkeit von externen Quellen reduziert wird. Dieser Leitfaden unterstützt Benutzer mit Schwierigkeiten beim Einrichten oder Betrieb des Objektcaches.

Anweisungen zum anfänglichen Setup finden Sie in der Dokumentation zum Zwischenspeichern von Ressourcen.

Diagnose von Fehlern beim Zwischenspeichern von Ressourcen

vcpkg überprüft verfügbare Ressourcencaches, bevor Artefakte aus dem Internet heruntergeladen werden. Standardmäßig fällt sie automatisch auf externe Quellen zurück, wenn eine Ressource nicht im Cache gefunden wird.

Mit der Option "x-block-origin" werden Fehler bei der Wiederherstellung von Ressourcen in explizite Buildfehler umgewandelt, sodass unbeabsichtigte externe Downloads verhindert werden. Verwenden Sie diese Option, um die Sicherheit zu verbessern und fehlende Cachetreffer sichtbarer zu machen.

Erkennen von Problemen mit der Wiederherstellung von Ressourcen

Probleme bei der Wiederherstellung von Ressourcen werden standardmäßig automatisch ausgeführt. Sie können erkannt werden, indem die Download-URL eines Artefakts überprüft wird.

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

Oder ein expliziter Fehler, wenn die x-block-origin Option aktiviert ist:

error: Failed to download from mirror set

Erkennen von Problemen beim Hochladen von Ressourcen

Wenn eine Ressourcenquelle ordnungsgemäß konfiguriert ist, gibt vcpkg eine Warnung aus, wenn eine Ressource nicht in den Cache hochgeladen werden kann.

warning: failed to store back to mirror

Artefakte werden nicht aus meinem Objektcache hochgeladen oder wiederhergestellt.

Das x-azurl von vcpkg bereitgestellte Objektcache-Back-End ist für die Arbeit mit Azure Storage-Containern konzipiert, es kann mit anderen Speicherdiensten funktionieren, die PUT-Anforderungen mit einfacher Tokenauthentifizierung akzeptieren.

Die Konfiguration weist das folgende Format auf:

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

  • <url>: Die Basis-URL des Containers
  • <sas>: Ein SAS-Token (Shared Access Signature) beim Arbeiten mit Azure Storage-Containern; oder einen Authentifizierungsanforderungsparameter, wenn Sie mit anderen Anbietern arbeiten.
  • <rw>: (Optional) Lese-/Schreibberechtigungskonfiguration

Hinweis

Während sie für die Arbeit mit Azure Storage-Containern konzipiert sind. Das x-azurl Back-End kann für Speicherdienste verwendet werden, die Anforderungen in Form von <url>?<sas>.

Führt z. B x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite . zu einer Anforderung in Form von https://contoso.com?token=TOKEN_VALUE.

Wenn Ihr Objektcacheanbieter keine Autorisierung erfordert, kann der <sas> Parameter leer bleiben. Beispiel: x-azurl,https://contoso.com,,readwrite.

Ursache 1: Die URL ist nicht richtig formatiert

Stellen Sie beim Einrichten des Objektcaches sicher, dass Sie als Teil der URL einbezogen https:// werden.

Schritte zum Beheben:

1 – Überprüfen Sie, ob die konfigurierte URL korrekt ist.

Ursache 2: Das Autorisierungstoken ist nicht richtig formatiert

vcpkg verwendet den <sas> Parameter, um sich beim Objektcacheanbieter zu authentifizieren. Es gibt eine Vielzahl von Gründen, warum die Autorisierung möglicherweise nicht erfolgreich ist.

Wenn Sie einen Azure Storage-Container verwenden, sollte der <sas> Parameter nur das SAS-Token ohne andere Anforderungsparameterformatierung enthalten. Beispiel:

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

Lesen Sie die Dokumentation zum Generieren von SAS-Token , um weitere Informationen zu erhalten. Stellen Sie sicher, dass die Lese- und Schreibberechtigungen des generierten Tokens ihrem erforderlichen Anwendungsfall entsprechen.

Wenn Sie einen anderen Anbieter verwenden, müssen Sie die Anforderungsparameter möglicherweise richtig formatieren. Beispiel: Präfix eines Parameternamens vor dem Wert des Tokens.

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

Schritte zum Beheben:

1 – Überprüfen, ob das Autorisierungstoken nicht abgelaufen ist

2 – Überprüfen, ob das Autorisierungstoken über die richtigen Berechtigungen für Ihren Container verfügt

3 – Überprüfen, ob der Wert des Autorisierungstokens korrekt ist

4 – Überprüfen Sie, ob das Format des Autorisierungstokens mit dem erwarteten Format ihres Anbieters übereinstimmt.

Ich erhalte die Fehlermeldung "Fehler beim Herunterladen von Spiegel set".

Dieses Problem tritt auf, wenn die Zwischenspeicherungskonfiguration für Ressourcen enthält x-block-origin.

Die Verwendung x-block-origin von Fehlern zum Wiederherstellen einer Ressource aus einem konfigurierten Cache in Paketbuildfehler. Verhindern des möglicherweise unerwünschten Zugriffs auf externe Quellen.

Schritte zum Beheben:

1 – Überprüfen, ob Ihr Netzwerk Zugriff auf die Ressourcenquelle hat

2 – Überprüfen Sie, ob die angeforderte Ressource in mindestens einem der konfigurierten Objektcaches vorhanden ist. Wenn das Paket nicht vorhanden ist, gibt es zwei Methoden, um das Problem zu beheben:

  • Das vorübergehende Deaktivieren x-block-origin , damit vcpkg die Ressource herunterladen und in einen konfigurierten Ressourcencache hochladen kann.
  • Manuelles Hochladen der Ressource in einen der konfigurierten Objektcaches.

3 – Vergewissern Sie sich, dass die Ressourcencaches ordnungsgemäß konfiguriert sind, führen Sie die Schritte in Artefakten aus, die nicht aus meinem Objektcache hochgeladen oder wiederhergestellt werden.

Das Problem ist hier nicht aufgeführt

Wenn Ihr Problem hier nicht aufgeführt ist, besuchen Sie unser Repository , um ein neues Problem zu erstellen.