背景
vscode 远程开发出现报错 The remote host doesn’t meet the prerequisites for running VS Code Server(远程主机不满足运行VS Code服务器的先决条件)
根本原因
早在2023年还是2024年初,vscode 就出过一次这种问题,官方的主要目的是放弃对低版本系统的支持。不过当时没有任何通知,比较突然,后续官方发了一个修复版本,让大家可以继续使用低版本系统到 2025 年第一季度,给了大家一定的时间去升级系统。
然后官方在 1.97 的 changelog 中决定在 1.99 后将不允许连接到低版本系统进行远程开发。
不过官方也给出了解决方案
参见 https://aka.ms/vscode-remote/faq/old-linux
解决方案
官方给出的解决方案是先使用 crosstool 弄出一个高版本 glibc 的环境,然后使用 patchelf 来自动 patch
不过这个方案需要拿 crosstool 自己编译,也挺麻烦
有人给出了可以使用 brew 安装 glibc 和 patchelf,参见 Connect to Unsupported Older Linux servers with VS Code Remote-SSH using Custom glibc & libstdc++ - DEV Community
但是 brew 是一个 ruby 工具,安装也挺麻烦。
下面给出一种更简单的方案
下载 glibc
|
|
下载 patchelf
打开 Releases · NixOS/patchelf 下载合适的 patchelf
然后解压出来,将 bin/patchelf 放置到主机上的 /usr/local/bin/patchelf
配置环境变量
然后将以下内容写入到 ~/.ssh/environment 中
|
|
然后执行如下命令开启 ssh 环境变量
|
|
然后重新连接即可
如果不成功,请 ssh 登录到远程机器,执行 env | grep VSCODE
确认一下环境变量,如果不是这个,请检查你远程主机上的下列文件
-
~/.bashrc
-
/etc/environment
-
~/.profile
-
~/.zprofile
-
~/.bash_profile
查看是否有包含上述环境变量,如果存在就删除
参考链接
- VS Code Server Not Detecting Custom Environment Variables for Old Linux Workaround · Issue #246375 · microsoft/vscode
- Connect to Unsupported Older Linux servers with VS Code Remote-SSH using Custom glibc & libstdc++ - DEV Community
- Remote Development FAQ
- Allow connecting to unsupported Linux remotes, by use of custom glibc and stdc++ libraries · Issue #231623 · microsoft/vscode
- How does homebrew store bottles? · Homebrew · Discussion #4335
- Package core/glibc