注
このチュートリアルでは、Azure Artifacts でホストされている NuGet フィードを使用しますが、他の NuGet フィード プロバイダー (GitHub Packages など) にも同じ手順を使用できます。いくつかの変更が加えられます。
vcpkg では、NuGet パッケージ フィードを使用して、便利な方法でバイナリ パッケージをアップロードおよび復元できます。
NuGet パッケージ フィードにはアクセス制御機能があり、組織全体またはワークグループ全体のリソースへのアクセスを制限するのに最適です。 NuGet フィードは、 Azure Artifacts および GitHub パッケージ レジストリなど、複数のクラウド ストレージ プロバイダーによってサポート。
このチュートリアルで学習する内容は次のとおりです。
前提条件
- ターミナル
- vcpkg
- NuGet パッケージ フィード、またはそうでない場合は、従う Azure DevOps アカウント
- ターミナル
- vcpkg
- NuGet パッケージ フィード、またはそうでない場合は、従う Azure DevOps アカウント
- システムにインストールされている
monoパッケージ
1 - NuGet フィードを設定する
既存の NuGet パッケージ フィードがある場合は、この手順をスキップします。
手順に従って、Azure Artifacts NuGet フィード 設定します。
任意の他の NuGet パッケージ フィード プロバイダーを使用することもできます。
2 - NuGet ソースを追加する
注
Linux では、monoを実行nuget.exe必要があります。 ディストリビューションのシステム パッケージ マネージャーを使用して、 mono をインストールできます。
vcpkg は、バイナリ キャッシュ操作中に使用する nuget.exe 実行可能ファイルの独自のコピーを取得します。 このチュートリアルでは、vcpkg で取得した nuget.exeを使用します。
vcpkg fetch nuget コマンドは、vcpkg で取得したnuget.exeの場所を出力し、必要に応じて実行可能ファイルをダウンロードします。
次のコマンドを実行して NuGet フィードをソースとして追加し、 <feed name> を任意の名前に置き換え、 <feed url> を NuGet フィードの URL に置き換えます。
.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>
次のコマンドを実行して、NuGet 実行可能ファイルへのパスをフェッチします。
vcpkg fetch nuget
これにより、 C:\path\to\nuget.exeのような出力が提供されます。 このパスを書き留めます。
前の手順で取得したパスを使用して、次のコマンドを実行します。
C:\path\to\nuget.exe sources add -Name <feed name> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources add -Name <feed name> -Source <feed url>
API キーを指定する
一部のプロバイダーでは、API キーを使用して NuGet パッケージをフィードにプッシュする必要があります。 たとえば、GitHub パッケージでは、API キーとして GitHub PAT (個人用アクセス トークン) が必要です。Azure Artifacts を使用している場合は、代わりに API キーが AzureDevOps 。
次のコマンドを使用して、NuGet フィードにプッシュされたすべてのパッケージの API キーを設定し、 <apiKey> をフィードの API キーに置き換えます。
.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>
次のコマンドを実行して、NuGet 実行可能ファイルへのパスをフェッチします。
vcpkg fetch nuget
これにより、 C:\path\to\nuget.exeのような出力が提供されます。 このパスを書き留めます。
前の手順で取得したパスを使用して、次のコマンドを実行します。
C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>
認証資格情報を指定する
NuGet フィードでは、パッケージをダウンロードしてアップロードできるようにするために認証が必要になる場合があります。 その場合は、 nuget sources add コマンドにパラメーターとして追加することで資格情報を指定できます。
次に例を示します。
nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText
Azure Artifacts などの一部のプロバイダーでは、異なる認証方法が必要になる場合があります。詳細については、 プライベート NuGet フィードへの認証に関する記事を参照してください 。
nuget.config ファイルを使用する
または、次のテンプレートに従って、 nuget.config ファイルを使用して NuGet ソースを構成することもできます。
nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="defaultPushSource" value="<feed url>" />
</config>
<apiKeys>
<add key="<feed url>" value="<apikey>" />
</apiKeys>
<packageSources>
<clear />
<add key="<feed name>" value="<feed url>" disableTLSCertificateValidation="false" />
</packageSources>
<packageSourceCredentials>
<<feed name>>
<add key="Username" value="<username>" />
<add key="ClearTextPassword" value="<password>" />
</<feed name>>
</packageSourceCredentials>
</configuration>
nuget.config ファイルの例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="defaultPushSource" value="https://contoso.org/packages/" />
</config>
<apikeys>
<add key="https://contoso.org/packages/" value="encrypted_api_key" />
</apikeys>
<packageSources>
<clear />
<add key="Contoso" value="https://contoso.org/packages/" disableTLSCertificateValidation="false" />
</packageSources>
<packageSourceCredentials>
<Contoso>
<add key="Username" value="user" />
<add key="ClearTextPassword" value="..." />
</Contoso>
</packageSourceCredentials>
</configuration>
vcpkg では、defaultPushSource ファイルにnuget.configを設定する必要があります。既定のソースとして NuGet フィードの URL を使用してバイナリ パッケージをプッシュします。
パッケージを Azure Artifacts NuGet フィードにアップロードする場合は、AzureDevOpsを実行してソースの API キーとしてnuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>を使用します。
それ以外の場合は、フィードの適切な API キーがある場合は、値を置き換えます。
自己署名証明書を使用している場合は、TLS 証明書の検証を無効にする必要がある場合があります。 このオプションは、 nuget.config ファイルを使用する場合にのみ使用できます。
<clear /> ソースを追加して、以前に構成した他の値を無視します。 必要に応じて、このファイルに複数のソースを定義し、ソースごとに <add key="<feed name>" value="<feed url>" /> エントリを使用できます。
3 - NuGet フィードを使用するように vcpkg を構成する
VCPKG_BINARY_SOURCES環境変数を次のように設定します。
$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
nuget.config ファイルを使用している場合は、代わりに次の操作を行います。
$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"
nuget.config ファイルを使用している場合は、代わりに次の操作を行います。
set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"
注
VCPKG_BINARY_SOURCES コマンドを使用してexportを設定すると、現在のシェル セッションにのみ影響します。 この変更をセッション間で永続的にするには、シェルのプロファイル スクリプト (exportや~/.bashrcなど) に ~/.zshrc コマンドを追加する必要があります。
export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
nuget.config ファイルを使用している場合は、代わりに次の操作を行います。
export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>,readwrite"
以上で作業は終了です。 vcpkg は NuGet フィードからパッケージをアップロードまたは復元します。
次のステップ
次に試すその他のタスクを次に示します。
vcpkg