資産キャッシュに関する問題のトラブルシューティング

資産キャッシュでは、ダウンロードしたパッケージ (資産) をローカルまたはネットワークに格納することで、パッケージの取得を高速化し、外部ソースへの依存関係を減らします。 このガイドは、資産キャッシュのセットアップまたは操作に関する問題に直面しているユーザーを支援します。

初期セットアップ手順については、資産キャッシュの ドキュメントを参照してください

資産キャッシュ エラーの診断

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 Storage コンテナーと連携するように設計されており、単純なトークン認証で PUT 要求を受け入れる他のストレージ サービスと連携する場合があります。

構成の形式は次のとおりです。

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

  • <url>: コンテナーのベース URL
  • <sas>: Azure Storage コンテナーを使用する場合の Shared Access Signature (SAS) トークン。または他のプロバイダーと連携している場合は認証要求パラメーター。
  • <rw>: (省略可能) 読み取り/書き込みアクセス許可の構成

Note

Azure Storage コンテナーを使用するように設計されています。 バックエンドは 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 が正しく書式設定されていません

アセット キャッシュを設定するときは、URL の一部として含めるように https:// してください。

解決手順:

1 - 構成された URL が正しいことを確認します。

原因 2: 承認トークンの形式が正しくありません

vcpkg は、パラメーターを <sas> 使用して資産キャッシュ プロバイダーに対する認証を行います。 承認が成功しない理由はさまざまです。

Azure Storage コンテナーを使用している場合、パラメーターには、他の <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 - 要求された資産が、構成済みの資産キャッシュの少なくとも 1 つに存在することを確認します。 パッケージが存在しない場合は、次の 2 つの方法で問題を解決できます。

  • vcpkg が資産を x-block-origin ダウンロードし、構成済みの資産キャッシュにアップロードできるようにするために、一時的に無効にします。
  • 構成済みの資産キャッシュのいずれかに手動で資産をアップロードする。

3 - 資産キャッシュが正しく構成されていることを確認します。資産キャッシュから成果物がアップロードまたは復元されていないことに関するページの手順に従います。

問題がこの一覧に含まれていない

問題がここに記載されていない場合は、リポジトリにアクセスして新しい問題を作成してください。