開発ドライブ(Dev Drive) #8 vcpkg パッケージ キャッシュ

Microsoft Build 2023で発表があった開発ドライブ (Dev Drive)が使えるようになりました。さっそく、開発ドライブを作成・設定しました。今回は、開発ドライブを作成した後の各種設定について説明します。

開発ドライブ (Dev Drive)とは

開発ドライブ (Dev Drive)の説明、要件、作成方法などは、以前の投稿で説明しましたので、説明は省略します。以前の投稿を参照してください。

開発ドライブの作成後の設定

今回も開発ドライブを作成した後の、開発環境の設定について説明します。

開発ドライブは、レポジトリ(ソースコード)の保存先やパッケージキャッシュの保存先の利用が想定されています。しかし、開発ドライブを作成しただけでは、これらのものが自動的に開発ドライブに移動することはありません。

そのため、開発ドライブを作成した後は、

  • ソースコードを移動
  • ソースコードの置き場所の既定値の設定の変更
  • パッケージキャッシュの保存先の変更

などの作業をする必要があります。

以降は、以下の前提で説明をします。

  • 開発ドライブ作成前の既存のレポジトリの保存先: C:\Repos\
  • 開発ドライブ作成前の既存のパッケージ キャッシュの保存先: それぞれのパッケージキャッシュの既定のフォルダー
  • 作成した開発ドライブのドライブレター: Dドライブ
  • 開発ドライブ上の新たなレポジトリの保存先: D:\Repos\
  • 開発ドライブ上の新たなパッケージ キャッシュの保存先: D:\Packages\
    • D:\Packages\npm-cache\
    • D:\Packages\nuget\
    • D:\Packages\pip-cache\
    • D:\Packages\vcpkg-archives\
  • 開発ドライブ上の新たなシンボル キャッシュ フォルダー: D:\SymbolCache\

nuget 以外のパッケージキャッシュフォルダー

C#のプログラム開発では、パッケージマネージャーはnugetです。しかし、他の言語でのプログラム開発であれば他のパッケージマネージャーを使います。node.js では npm 、pythonではpip などを使います。

これらのパッケージマネージャーもローカル ストレージにパッケージ キャッシュを保存します。

そのため、これらのパッケージ キャッシュも、開発ドライブに配置するのが適しています。これらのパッケージ キャッシュ フォルダーも開発ドライブ側に移動します。

C / C++ の vcpkg のバイナリ キャッシュ フォルダーの設定

クロスプラットフォーム C / C++ 向けのパッケージマネージャーである vcpkg も他のパッケージマネージャーと同様にバイナリ キャッシュをローカルストレージに配置します。

この vcpkg のバイナリ キャッシュを開発ドライブに移設します。開発ドライブ側に作成する vcpkg のバイナリ キャッシュ フォルダーは、D:\Packages\vcpkg-archives\ である前提で説明します。

この投稿の内容を超える詳細については、vcpkg のドキュメント「バイナリ キャッシュ」を参照してください。

バイナリ キャッシュ フォルダーの既定値

vcpkg のバイナリ キャッシュ フォルダーの既定値は、以下となります。

C:\Users\(username)\AppData\Local\vcpkg\archives\
または
C:\Users\(username)\AppData\Roaming\vcpkg\archives\

(username)のところは、ログオンしているユーザーのユーザー名となります。ユーザーごとに変化しないパスで表現すると以下のパスになります。

%LOCALAPPDATA%\vcpkg\archives
または
%APPDATA%\vcpkg\archives

この既定のパスを、開発ドライブに変更します。

バイナリ キャッシュ フォルダーの設定値

この既定のフォルダーパスを変更する方法には、二つあります。

  • vcpkg コマンドを実行するときにコマンド ライン オプション --binarysource=<source> を使用し設定する
  • 環境変数(VCPKG_DEFAULT_BINARY_CACHE)で設定する

他のパッケージ マネージャーと異なり、vcpkg パッケージ マネージャーには構成設定ファイルがありません。そのため、上記の二つの方法しかありません。

前者は、vcpkg コマンドを実行する毎にコマンドライン オプションを設定する必要があり、煩雑です。そのため、他のパッケージ マネージャーとは異なり、後者の環境変数を設定する方法が適しています。

そこで、後者の方法で設定することとします。

今回の場合は、ユーザーのバイナリ キャッシュ フォルダーを変更したいので、ユーザー レベルの環境変数を変更するのが適切です。なお、同じPC上の各ユーザーでキャッシュを共有したい場合は、システム レベルの環境変数を変更します。

環境変数を設定する場合は、Windowsが用意している設定UIもしくはコマンドラインでsetxを使います。

バイナリ キャッシュ フォルダーの設定の変更 (setx利用)

環境変数 VCPKG_DEFAULT_BINARY_CACHE をコマンドラインで設定する場合は、setx コマンドを使用します。

setx /M VCPKG_DEFAULT_BINARY_CACHE D:\packages\vcpkg

バイナリ キャッシュ フォルダーの設定の変更 (GUI利用)

環境変数を設定する場合は、Windowsが用意している設定UIを使います。

まず、[Windows]ボタンを押し、スタート画面を開きます。その状態で「システムの詳細」と入力すると、「システムの詳細設定の表示」が見つかります。

スタート画面に「システムの詳細」を入力

「システムの詳細設定の表示」を開くと「システムのプロパティ」の「詳細設定」タブが開きます。このタブの下部にある「環境変数」ボタンをクリックします。

システムのプロパティ

「環境変数」画面では、ユーザー レベルで環境変数を追加するときは、赤色枠の「新規」ボタンをクリックします。システム レベルで環境変数を追加するときは、緑色枠の「新規」ボタンをクリックします。「新規」ボタンをクリックすると「新規ユーザー変数」または、「新規システム変数」の画面が開きます。

「環境変数」の設定

「新規ユーザー変数」または「新規システム変数」の画面では、変数名と変数値を入力します。変数名には、VCPKG_DEFAULT_BINARY_CACHEを設定します。変数値には、バイナリ キャッシュ フォルダーのパスを設定します。変数値は直接パスを入力してもよいですが、左下の「ディレクトリの参照」ボタンをクリックすると、フォルダーを選択して設定できます。

新しいシステム変数
[global]
cache-dir = E:\packages\pip-cache

pip CLI (pip.exe) が使える環境であれば、下記のコマンドラインを実行することにより、ユーザー レベルの構成設定に追加できます。

pip config set global.cache-dir "D:/packages/pip-cache"

グローバル レベルで設定する場合には、以下のように --global オプションを追加します。

pip config --global set global.cache-dir "D:/packages/pip-cache"

また、下記のコマンドラインを実行することにより、設定内容の確認ができます。

pip config get global.cache-dir
(グローバル レベルに設定した場合は、pip config --global get global.cache-dir)

既存のパッケージ キャッシュ フォルダーのファイルを移動

パッケージ キャッシュ フォルダーの設定を変更したら、パッケージの再ダウンロードが発生しないように、古いパッケージ キャッシュ フォルダーのファイルを新しいパッケージ キャッシュ フォルダーにコピーします。なお、パッケージの再ダウンロードが発生してもよい場合は、このコピーは不要です。

まずは、既定のパッケージ キャッシュ フォルダーである%LOCALAPPDATA%\pip\cache\ (C:\Users(username)\AppData\Local\pip\cache\) フォルダーを開きます。

このパスを「ファイル名を指定して実行」(Windowsキー + Rキー) や Windowsエクスプローラーのアドレス バーに入力しEnterキーを押下すると、pip パッケージ キャッシュ フォルダーが開きます。

ファイル名を指定して実行に %LOCALAPPDATA%\pip\cache を入力
Windowsエクスプローラーのアドレスバーに %LOCALAPPDATA%\pip\cache を入力

この pip パッケージ キャッシュ フォルダー内のすべてのファイルとフォルダーを開発ドライブのD:\packages\pip-cache\フォルダーにコピーします。

コピーしたパッケージ キャッシュ ファイルの確認

コピーが完了したら、正しくコピーされているか確認するために、pip cache infoコマンドでキャッシュを確認します。

D:\>pip cache info
Location: d:\packages\pip-cache\wheels
Size: 0 bytes
Number of wheels: 0

D:\>

存在するパッケージ キャッシュの量により表示される数値は異なります(この例はwheelsキャッシュがない状態です)。内容に問題がなければ、キャッシュフォルダーの設定変更と既存のキャッシュのコピーは成功しています。

既存のパッケージキャッシュフォルダーの削除

pip パッケージ キャッシュ フォルダーを、既定値のフォルダーパスから開発ドライブのパスに変更した後は、既存のキャッシュフォルダーは利用されることはありません。ストレージを無駄に消費するだけなので、既存のパッケージ キャッシュ フォルダーは削除します。

以上で、pip のパッケージ キャッシュ フォルダーに関する設定の変更は完了です。


今回の投稿では、pip のパッケージ キャッシュ フォルダーを開発ドライブに移設する方法を説明しました。

コメントを残す