Udostępnij za pośrednictwem


Rozwiązywanie problemów z buforowaniem zasobów

Buforowanie zasobów przyspiesza pobieranie pakietów przez przechowywanie pobranych pakietów (zasobów) lokalnie lub w sieci, co zmniejsza zależność od źródeł zewnętrznych. Ten przewodnik ułatwia użytkownikom trudności z konfiguracją lub operacją pamięci podręcznej zasobów.

Aby uzyskać instrukcje dotyczące początkowej konfiguracji, zapoznaj się z dokumentacją buforowania zasobów.

Diagnozowanie błędów buforowania zasobów

Narzędzie vcpkg sprawdza dostępne pamięci podręczne zasobów przed pobraniem artefaktów z Internetu. Domyślnie dyskretnie wraca do źródeł zewnętrznych, jeśli element zawartości nie zostanie znaleziony w pamięci podręcznej.

Opcja "x-block-origin" przekształca błędy przywracania zasobów w jawne błędy kompilacji, uniemożliwiając niezamierzone pobieranie zewnętrzne. Użyj tej opcji, aby zwiększyć bezpieczeństwo i zwiększyć widoczność brakujących trafień pamięci podręcznej.

Wykrywanie problemów z przywracaniem zasobów

Problemy z przywracaniem zasobów są domyślnie dyskretne. Można je wykryć, sprawdzając adres URL pobierania artefaktu.

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

Lub jawny błąd po włączeniu x-block-origin opcji:

error: Failed to download from mirror set

Wykrywanie problemów z przekazywaniem zasobów

Jeśli źródło zasobów jest poprawnie skonfigurowane, narzędzie vcpkg emituje ostrzeżenie, gdy nie można przekazać elementu zawartości do pamięci podręcznej.

warning: failed to store back to mirror

Artefakty nie są przekazywane ani przywracane z pamięci podręcznej zasobów

x-azurl Zaplecze pamięci podręcznej zasobów udostępnione przez narzędzie vcpkg jest przeznaczone do pracy z kontenerami usługi Azure Storage, może współpracować z innymi usługami magazynu, które akceptują żądania PUT z prostym uwierzytelnianiem tokenu.

Konfiguracja ma następujący format:

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

  • <url>: podstawowy adres URL kontenera
  • <sas>: token sygnatury dostępu współdzielonego (SAS) w przypadku pracy z kontenerami usługi Azure Storage; lub parametr żądania uwierzytelniania w przypadku pracy z innymi dostawcami.
  • <rw>: (Opcjonalnie) konfiguracja uprawnień do odczytu/zapisu

Uwaga

Chociaż jest przeznaczony do pracy z kontenerami usługi Azure Storage. Zaplecze x-azurl może służyć do obsługi usług magazynu, które akceptują żądania w postaci <url>?<sas>.

Na przykład x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite powoduje wyświetlenie żądania w postaci https://contoso.com?token=TOKEN_VALUE.

Jeśli dostawca pamięci podręcznej zasobów nie wymaga autoryzacji, <sas> parametr można pozostawić pusty. Na przykład x-azurl,https://contoso.com,,readwrite.

Przyczyna 1. Adres URL nie jest poprawnie sformatowany

Podczas konfigurowania pamięci podręcznej zasobów upewnij się, że został uwzględniny https:// jako część adresu URL.

Kroki umożliwiające rozwiązanie problemu:

1 — Sprawdź, czy skonfigurowany adres URL jest poprawny.

Przyczyna 2. Token autoryzacji nie jest poprawnie sformatowany

Narzędzie vcpkg używa parametru <sas> do uwierzytelniania dostawcy pamięci podręcznej zasobów. Istnieje wiele powodów, dla których autoryzacja może się nie powieść.

Jeśli używasz kontenera usługi Azure Storage, <sas> parametr powinien zawierać tylko token SAS bez żadnego innego formatowania parametrów żądania. Na przykład:

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

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą generowania tokenów SAS. Upewnij się, że wygenerowane uprawnienia do odczytu i zapisu tokenu są zgodne z wymaganym przypadkiem użycia.

Jeśli używasz innego dostawcy, może być konieczne poprawne sformatowanie parametrów żądania. Na przykład prefiks nazwy parametru przed wartością tokenu.

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

Kroki umożliwiające rozwiązanie problemu:

1 — Sprawdź, czy token autoryzacji nie wygasł

2 — Sprawdź, czy token autoryzacji ma odpowiednie uprawnienia do kontenera

3 — Sprawdź, czy wartość tokenu autoryzacji jest poprawna

4 — Sprawdź, czy format tokenu autoryzacji jest zgodny z oczekiwanym formatem dostawcy.

Otrzymuję komunikat o błędzie "Nie można pobrać z zestawu dublowania"

Ten problem występuje, gdy konfiguracja buforowania zasobów zawiera x-block-originwartość .

Niepowodzenie przywracania zasobu z dowolnej skonfigurowanej pamięci podręcznej do niepowodzeń kompilacji pakietu przy użyciu x-block-origin zmian. Zapobieganie potencjalnie niepożądanemu dostępowi do źródeł zewnętrznych.

Kroki umożliwiające rozwiązanie problemu:

1 — Sprawdź, czy sieć ma dostęp do źródła zasobów

2 — Sprawdź, czy żądany zasób istnieje w co najmniej jednej ze skonfigurowanych pamięci podręcznych zasobów. Jeśli pakiet nie istnieje, istnieją dwie metody rozwiązania problemu:

  • Tymczasowe x-block-origin wyłączenie, aby umożliwić programowi vcpkg pobranie elementu zawartości i przekazanie go do skonfigurowanej pamięci podręcznej zasobów.
  • Ręczne przekazywanie zasobu do jednej ze skonfigurowanych pamięci podręcznych zasobów.

3 — Sprawdź, czy pamięci podręczne zasobów są prawidłowo skonfigurowane, wykonaj kroki opisane w artykule Artefakty nie są przekazywane ani przywracane z pamięci podręcznej zasobów.

Problem nie znajduje się tutaj

Jeśli problem nie jest wymieniony tutaj, odwiedź nasze repozytorium , aby utworzyć nowy problem.