針對資產快取問題進行疑難解答
資產快取可藉由將下載的套件(資產)儲存在本機或網路上來加速封裝擷取,減少對外部來源的相依性。 本指南可協助使用者面臨資產快取設定或作業的困難。
如需初始設定指示,請參閱 資產快取檔。
診斷資產快取錯誤
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 - 確認資產快取已正確設定,請遵循成品未從資產快取上傳或還原中的步驟。
問題未列於此處
如果此處未列出您的問題,請造訪 我們的存放庫 以建立新的問題。