プロキシ環境化の Windows に Rust 開発環境構築
プロキシ環境化で Windows に Rust 開発環境を構築する方法のメモです。
やりたいこと
Rust 自体のインストールや Cargo での crates.io
の外部クレートの利用にはインターネットアクセスが必要で、プロキシ環境だといろいろ怒られるので、設定方法を纏めておきます。
環境
- OS
- Windows 10 21H2
- Rust
- rustup
1.25.1
, rustc1.62.1
, cargo1.62.1
Visual Studio C++ Build tools
インストール
Rust をインストール - Rustプログラミング言語 に記載がありますが、Windows の場合 Cコンパイラとして Visual Studio C++ Build tools
が必要です。
なお、Visual Studio C++ Build tools
のライセンスは以下の通りですので、個人利用以外の場合はライセンスを確認してください。
- インストールと使用権。
お客様は、Visual Studio Community、Visual Studio Professional、Visual Studio Enterprise と共に使用する場合に限り、本ソフトウェアの任意の数の複製をインストールして使用し、お客様のアプリケーションを開発およびテストすることができます。 マイクロソフト ソフトウェア ライセンス条項
-
Visual Studio C++ Build tools
インストーラーのダウンロードMicrosoft C++ Build Tools - Visual Studio からインストーラーをダウンロードします。
-
インストーラーの実行
ダウンロードした
vs_BuildTools.exe
を実行します。ワークロード等の選択をする必要がありますが、The Rust Programming Language 日本語版 に以下の記載があります。どのワークロード (workloads) をインストールするかと質問されたときは、“C++ build tools"が選択されており、Windows 10 SDKと英語の言語パック (English language pack) が含まれていることを確かめてください。 - インストール - The Rust Programming Language 日本語版
こちらに沿って、
ワークロード
タブではC++ によるデスクトップ開発
を選択し、右側のオプションでWindows 10 SDK
が選択されていることを確認します。他のオプションの要否は確認していませんが、デフォルト選択されているものはそのままにしています。同様に
言語パック
タブでは英語
が選択されていることを確認し、インストール
をクリックします。 -
必要なリソースをダウンロードしながらインストールが進みます。このときもプロキシの影響を受けるはずですが、私の環境では影響ありませんでした。おそらく既存の Windows プロキシ設定を参照していると思われます。
Windows のプロキシ設定は
インターネットオプション
での設定とWinHTTP
での設定の2箇所ありますが、おそらく後者を参照していると思われます。WinHTTP
でのプロキシ設定の確認はコマンドプロンプト
あるいはPowershell
で以下コマンドで確認できます。
rustup
インストール
Rust をインストール - Rustプログラミング言語 のおすすめに沿って、rustup
を使用して Rust をインストールします。
-
Rust をインストール - Rustプログラミング言語 から
rustup-init.exe
をダウンロードします。 -
rustup-init.exe
は必要リソースをダウンロードしてインストールするので、プロキシ情報を環境変数に設定する必要があります。Network proxies - The rustup bookに沿ってコマンドプロンプト
あるいはPowershell
で以下のように設定します。コマンドプロンプト
の場合:Powershell
の場合: -
rustup-init.exe
を実行します。以下のようにオプションを選択する必要がありますが、1
を選択します。ここでプロキシ設定ができていないと以下のようなエラーが出てインストールに失敗します。
-
インストールが完了したら、以下コマンドで確認します。
次のように表示されればインストールできています。
cargo
のプロキシ設定
Rust のビルドやパッケージ管理には cargo
が必須ですが、crates.io
の外部パッケージに依存がある場合、cargo
はビルド時に crates.io
を参照し、依存するリソースをダウンロードし、ビルドするため、cargo
にもプロキシ設定が必要です。
cargo
は様々な設定を config.toml
ファイルで定義することができます。config.toml
は Configuration - The Cargo Book で説明されていますが、パッケージ、プロジェクト、ユーザー、コンピューター等様々な単位で設定できます。プロキシ設定はどのプロジェクトでも必要だと思いますので、ここではユーザー単位の config.toml
に設定していきます。
プロジェクトの Cargo.toml
に誤って設定しないよう注意してください。Cargo.toml
に設定するとビルド時等に、warning: unused manifest key: http
というワーニングが出てしまいます。(もちろん設定も反映されません)
-
デフォルトインストールだと、
%USERPROFILE%
(=c:\Users\<ユーザー名
) の直下に.cargo
というディレクトリがあります。.cargo
ディレクトリの直下にconfig.toml
というファイルを作成します。 -
Configuration - The Cargo Book に沿って
config.toml
に以下のようにプロキシ情報を記載します。この設定は環境変数
CARGO_HTTP_PROXY
,HTTPS_PROXY
,https_proxy
,http_proxy
のいずれかで代替できるので、rustup
のときに設定した環境変数が生きていれば使いまわせます。 -
試しに新しいプロジェクトを作成します。
-
適当な
crates.io
のパッケージを依存関係に追加します。cargo add
は Cargo 1.62 (2022-06-30) で追加されたオプションです。これより前のバージョンの場合は、Cargo.toml
に次のエントリーを記述し、cargo fetch
を実行してください。 -
Cargo.toml
に以下のようなエントリーができていれば成功です。
cargo
の SSL connection error 対応
デフォルトでは Cargo はビルド時に依存パッケージをダウンロードします。このときに私の環境では以下のようなエラーが発生しました。
推測ですが、恐らく SSL コネクションが プロキシで終端していることによるものかと考えられます。
Configuration - The Cargo Bookの通り、Config.toml
の http.check-revoke
を false
にすることで、TLS 証明書チェックをバイパスでき、エラーがでなくなります。
あとがき
何かと面倒臭いプロキシ環境化の Windows に Rust 開発環境を構築しました。Windows だと Visual Studio C++ Build tools
が必要になってしまいますので、Windows Subsystem for Linux
で gcc
でコンパイルする環境も整えようかなと思いますが、こちらもプロキシ環境化では悩まされそうですね。