記錄vscode連接不上wsl子系統下ubuntu18.04問題解決方法
- 報錯內容
- 嘗試第一次解決方法
- 嘗試第二次解決方法
- 注意事項
- 參考連接
報錯內容
Unable to download server on client side: Error: Request downloadRequest failed unexpectedly without providing any details… Will try to download on WSL side. vscode
–2025-04-07 16:33:04-- https://update.code.visualstudio.com/commit:4437686ffebaf200fa4a6e6e67f735f3edf24ada/server-linux-legacy-x64/stable
[2025-04-07 08:33:05.151] Resolving update.code.visualstudio.com (update.code.visualstudio.com)… 13.107.246.50, 2620:1ec:bdf::50
[2025-04-07 08:33:05.151] Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|13.107.246.50|:443… connected.
[2025-04-07 08:33:05.436] HTTP request sent, awaiting response… 404 Not Found
[2025-04-07 08:33:05.436] 2025-04-07 16:33:05 ERROR 404: Not Found.
[2025-04-07 08:33:05.436]
[2025-04-07 08:33:05.436] ERROR: Failed to download https://update.code.visualstudio.com/commit:4437686ffebaf200fa4a6e6e67f735f3edf24ada/server-linux-legacy-x64/stable to /home/zl/.vscode-server/bin/4437686ffebaf200fa4a6e6e67f735f3edf24ada-1744014784.tar.gz
嘗試第一次解決方法
- 升級wsl 未能解決
- 回退vscode版本 未能解決
- 重啟計算機 未能解決
- 刪除服務器目錄并重新連接
rm -rf ~/.vscode-server
此步解決了上面的報錯,又出現新的報錯,如下:
/home/zl/.vscode-server/bin/4437686ffebaf200fa4a6e6e67f735f3edf24ada/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28’ not found (required by /home/zl/.vscode-server/bin/4437686ffebaf200fa4a6e6e67f735f3edf24ada/node)
嘗試第二次解決方法
mkdir ~/src
cd ~/srcwget 'https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz'
tar xzf glibc-2.28.tar.gzmkdir glibc-2.28-build
cd glibc-2.28-build
../glibc-2.28/configure --prefix=/opt/glibc-2.28make# make sure you can write to /opt/glibc-2.28
make install
其中遇到使用prefix命令修改指定編譯目錄出錯,報錯如下:
../configure --prefix=/opt/glibc-2.28/
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for readelf... readelf
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ can link programs... yes
checking for sysdeps preconfigure fragments... aarch64 alpha arm hppa i386 m68k microblaze mips nios2 powerpc riscv s390 sh sparc x86_64 checking whether gcc compiles in -mx32 mode by default... nochecking for use of fpu sysdeps directories... yes
checking for -fstack-protector... yes
checking for -fstack-protector-strong... yes
checking for -fstack-protector-all... yes
checking for assembler and linker STT_GNU_IFUNC support... yes
checking for gcc attribute ifunc support... yes
checking if compiler warns about alias for function with incompatible types... no
checking sysdep dirs... sysdeps/unix/sysv/linux/x86_64/64 sysdeps/unix/sysv/linux/x86_64 sysdeps/unix/sysv/linux/x86 sysdeps/x86/nptl sysdeps/unix/sysv/linux/wordsize-64 sysdeps/x86_64/nptl sysdeps/unix/sysv/linux sysdeps/nptl sysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/x86_64 sysdeps/unix sysdeps/posix sysdeps/x86_64/64 sysdeps/x86_64/fpu/multiarch sysdeps/x86_64/fpu sysdeps/x86/fpu sysdeps/x86_64/multiarch sysdeps/x86_64 sysdeps/x86 sysdeps/ieee754/float128 sysdeps/ieee754/ldbl-96 sysdeps/ieee754/dbl-64/wordsize-64 sysdeps/ieee754/dbl-64 sysdeps/ieee754/flt-32 sysdeps/wordsize-64 sysdeps/ieee754 sysdeps/generic
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether as is GNU as... yes
checking whether ld is GNU ld... yes
checking for as... as
checking version of as... 2.30, ok
checking for ld... ld
checking version of ld... 2.30, ok
checking for gnumake... no
checking for gmake... no
checking for make... make
checking version of make... 4.1, ok
checking for gnumsgfmt... no
checking for gmsgfmt... no
checking for msgfmt... msgfmt
checking version of msgfmt... 0.19.8.1, ok
checking for makeinfo... no
checking for sed... sed
checking version of sed... 4.4, ok
checking for gawk... gawk
checking version of gawk... 4.1.4, ok
checking for bison... no
checking if gcc is sufficient to build libc... yes
checking for nm... nm
checking for python3... python3
configure: error:
*** These critical programs are missing or too old: bison
*** Check the INSTALL file for required versions.
看報錯日志是編譯glibc-2.28時出現的bison缺失或版本過舊的問題,于是
sudo apt-get update
sudo apt-get install bison
安裝bison后再次執行
../configure --prefix=/opt/glibc-2.28/
成功修改編譯指定編譯目錄。
安裝"patchelf"
sudo apt-get update
sudo apt-get install patchelf
cd ~/.vscode-server/bin/4437686ffebaf200fa4a6e6e67f735f3edf24ada
cp node node_bak
patchelf --set-interpreter /opt/glibc-2.28/lib/ld-linux-x86-64.so.2 --set-rpath /opt/glibc-2.28/lib:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu node
至此glibc-2.28安裝及鏈接到新安裝的glibc-2.28完成,vscode可以正常連接到wsl擴展中的ubuntu18.04。
注意事項
編譯并覆蓋安裝glibc會導致系統崩潰,編譯的時候一定要指定prefix,千萬不能把系統中原有的lib給覆蓋了。
參考連接
https://github.com/microsoft/vscode/issues/210033