Linux

[Tips] WSLからVSCodeを起動したらgzipのエラーが出た

Tips

新規の端末でWSLからVSCodeを起動したらgzipのエラーがでました。Ubuntu 22.04です。

user@DESKTOP-G8NGVRT:~/demo$ code .
Installing VS Code Server for x64 (dfd34e8260c270da74b5c2d86d61aee4b6d56977)
Downloading: 100%
/usr/bin/gzip: 1: ELF ・・・: not found
/usr/bin/gzip: 3: ・・・: not found
/usr/bin/gzip: 4: Syntax error: "(" unexpected
tar: Child returned status 2
tar: Error is not recoverable: exiting now

tar is unable to read /home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977-1651407224.tar.gz. Either the file is corrupt or tar has an issue.
There's a known WSL issue with tar on Ubuntu 19.10.
See workaround in https://github.com/microsoft/vscode-remote-release/issues/1856.
Reload the window to initiate a new server download.

何かSyntax errorが起きているようです。

issuesを見てもとても古い情報であまり役に立ちませんでした。

原因を確認するために、gzipのバージョンを確認すると

$ gzip
-bash: /usr/bin/gzip: cannot execute binary file: Exec format error

何かバイナリが正しくないというエラーがでます。アーキテクチャが異なる場合に出るケースが多いですがx64です。

そこでWSLを確認するとバージョンが1です。これか?

C:\Users\user>wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 1

再確認したところ原因は「仮想マシン プラットフォーム」が有効化されていないためバージョンが1でした。

少なくともUbuntu 22.04はWSLバージョン2でも動作が必須のようです。

また、WSL自体もアップデートしておきます。

管理者権限でwsl --updateを実行します。

C:\WINDOWS\system32>wsl --update
更新をチェック中...
更新をダウンロード中...
更新をインストール中...
この変更は、次回の WSL 再起動時に有効になります。強制的に再起動するには、'wsl --shutdown' を実行してください。
カーネル バージョン: 5.10.102.1

あとはUbuntuのバージョンを2に変換します。

C:\Users\user>wsl --set-version Ubuntu-22.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

変換が完了しました。

デフォルトのバージョンも2に変更しておきます。

C:\Users\user>wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
この操作を正しく終了しました。

C:\Users\user>wsl --status
既定の配布: Ubuntu-22.04
既定のバージョン: 2

これで準備が整いました。

あとはVSCodeを起動を起動すると問題なく起動します。

 

-Linux
-,