プロキシ環境下の vscode で、 WSL 上で拡張機能を動かしたいのに、 インストールインストールに失敗する問題を解決するメモ。
前回の↓の記事は、 『Remote – WSL 拡張が有効にできない』問題だったが、今回は『Remote – WSL 拡張 を有効にした後、その環境上で他の拡張機能がインストールできない』問題なのでちょっと違う点に注意。ややこしいね。
遭遇した問題
Visual Sutdio Code (以下、 vscode) へ 無事に Remote – WSL 拡張機能 の "VS Code Server for WSL" のインストールが完了し、 Windows 上から 快適に WSL の環境にアクセスできるようになった。
しかし、 いくつかの vscode の拡張機能は、 Windows 上の環境とは別に WSL 上の環境で改めてインストールしなくてはならない。
そこで、 UI 上の案内に従って各拡張機能で "Install in WSL" を行ったところ、 プロキシ環境下だと以下のエラーが発生してインストールに失敗する問題に遭遇した。
Failed to install extension
パネル上の OUTPUT タブで "Log (Remote Server)" の情報を見ると、以下のようなエラーが発生しているのがわかる。
[remoteagent] [error] Failed to install extension: {拡張機能ID} connect ECONNREFUSED 13.107.6.175:443
settings.json ではプロキシの設定しているし、更には WSL 上の環境変数 (http_proxy
, https_proxy
) にだってプロキシを入れている。
更には(前述の)前回の記事に倣って、 WSL のコンソール上から code .
の立ち上げまで行ってみた。
それでも解消しない。何故だ。
なお、試した vscode のバージョンは、 August 2019 (version 1.38.1) だ。
"Remote [WSL]" 用の設定ファイルを書き換える
Remote – WSL 拡張をインストールすると、 Settings のウィンドウに "Remote [WSL]" というタブが増えている。
そのタブに移動してみると、 Proxy の設定が空欄になっているのがわかる。
"Modified in: User" って書いてあるので、 User タブの内容で上書きされる動作をしてくれそうだったり、 設定されてなかったら http_proxy
, https_proxy
の環境変数の値が使われると書いてあったりしているが、 とりあえずその情報は無視。
この "Remote [WSL]" 上のプロキシの設定も、 User タブと同様に改めて記載して保存し、 vscode をリロードしてみる。
その結果、 WSL 上の拡張機能もインストールに成功するようになった!
まとめ
- プロキシ環境下で WLS - Remote を使うときは、 Settings の "Remote [WSL]" タブにもプロキシの設定を書こう。
- WSL 上の
http_proxy
,https_proxy
の環境変数を設定しただけでは、 vscode の全ての通信をプロキシ経由にするには不十分のようだ。- VS Code Server for WSL の更新のため に、これらの環境変数は設定しておくべき。
- もしかしたら、 Windows 側の環境変数にも上記の値を設定させておけば、 本問題が発生しないのかも知れないが、試していない。
- vscode のプロキシ環境下の動作の作り込みは、まだまだ甘い。