共用方式為


針對資產快取問題進行疑難解答

資產快取可藉由將下載的套件(資產)儲存在本機或網路上來加速封裝擷取,減少對外部來源的相依性。 本指南可協助使用者面臨資產快取設定或作業的困難。

如需初始設定指示,請參閱 資產快取檔

診斷資產快取錯誤

vcpkg 會先檢查可用的資產快取,再從因特網下載成品。 根據預設,如果快取中找不到資產,它會以無訊息方式回復到外部來源。

' x-block-origin'' 選項會將資產還原失敗轉換成明確的建置錯誤,以防止非預期的外部下載。 使用此選項可增強安全性,並讓遺漏的快取叫用更加明顯。

偵測資產還原問題

資產還原問題預設為無訊息。 您可以藉由驗證成品的下載 URL 來偵測它們。

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

或啟用 選項時 x-block-origin 發生明確錯誤:

error: Failed to download from mirror set

偵測資產上傳問題

如果資產來源已正確設定,當資產無法上傳至快取時,vcpkg 會發出警告。

warning: failed to store back to mirror

成品不會從我的資產快取上傳或還原

x-azurl vcpkg 所提供的資產快取後端是設計來搭配 Azure 儲存體 容器使用,它可能會與其他接受 PUT 要求且具有簡單令牌驗證的記憶體服務搭配使用。

組態的格式如下:

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

  • <url>:容器的基底 URL
  • <sas>:使用 Azure 儲存體 容器時共用存取簽章 (SAS) 令牌;如果與其他提供者搭配使用,則為驗證要求參數。
  • <rw>:(選擇性) 讀取/寫入許可權設定

注意

雖然設計為使用 Azure 儲存體 容器。 後端 x-azurl 可用於接受格式 <url>?<sas>要求的記憶體服務。

例如, x-azurl,https://contoso.com,token=TOKEN_VALUE,readwrite 以的形式 https://contoso.com?token=TOKEN_VALUE產生要求。

如果您的資產快取提供者不需要授權, <sas> 參數可以保留空白。 例如: x-azurl,https://contoso.com,,readwrite

原因 1:URL 格式不正確

設定資產快取時,請確定您包含 https:// 為URL的一部分。

解決步驟:

1 - 確認設定的 URL 正確。

原因 2:授權令牌的格式不正確

vcpkg 會使用 <sas> 參數向資產快取提供者進行驗證。 授權可能不成功的原因有很多。

如果您使用 Azure 儲存體 容器,<sas>參數應該只包含 SAS 令牌,而不需要任何其他要求參數格式。 例如:

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

如需詳細資訊,請參閱產生 SAS 令牌的檔。 請確定產生的令牌讀取和寫入許可權符合您所需的使用案例。

如果您使用不同的提供者,您可能需要正確格式化要求參數。 例如,在令牌的值前面加上參數名稱。

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

解決步驟:

1 - 確認授權令牌未過期

2 - 確認授權令牌具有容器的正確許可權

3 - 確認授權令牌的值正確

4 - 確認授權令牌的格式符合提供者的預期格式。

我收到「無法從鏡像集下載」錯誤訊息

當資產快取組態包含 x-block-origin時,就會發生此問題。

使用 x-block-origin 將失敗從任何已設定的快取還原資產轉換成套件建置失敗。 防止可能不需要存取外部來源。

解決步驟:

1 - 確認您的網路具有資產來源的存取權

2 - 確認所要求的資產至少存在於其中一個已設定的資產快取中。 如果套件不存在,有兩種方法可以解決此問題:

  • 暫時停用 x-block-origin ,以允許 vcpkg 下載資產,並將它上傳至已設定的資產快取。
  • 手動將資產上傳至其中一個已設定的資產快取。

3 - 確認資產快取已正確設定,請遵循成品未從資產快取上傳或還原中的步驟。

問題未列於此處

如果此處未列出您的問題,請造訪 我們的存放庫 以建立新的問題。