如何通过homebrew解决vscode无法连接老版本linux

背景

从 VS Code release 1.99 (March 2025) 版本开始,对系统依赖要求如下,官方说明见 Remote Development FAQ

VS Code version Base Requirements Notes
>= 1.99.x kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, binutils >= 2.29

如果是一些老的linux设备,往往glibc版本较低,vscode 远程开发会报错 The remote host doesn’t meet the prerequisites for running VS Code Server(远程主机不满足运行 VS Code 服务器的先决条件)

为了解决这个问题,你需要安装linuxbrew,然后让vscode使用linuxbrew提供的glibc

更新curl版本(先往下看安装brew,提示curl版本过低再看这里)

如果你的linux版本很老的话,curl版本也会很低,无法满足linuxbrew安装需求

可以通过包管理器比如apt、yum更新最好,但是很不幸你的linux版本太老的话,无法通过包管理器更新curl,就需要手动编译,

下面以centos手动编译8.4.0版本的curl为例,先安装到/usr/local/bin (以免和系统正在使用的curl冲突),之后再配置linuxbrew使用这个路径下的curl

sudo yum install -y epel-release
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel zlib-devel libidn-devel libssh2-devel nghttp2-devel ca-certificates pkgconfig
VER=8.4.0
cd /tmp
wget https://curl.se/download/curl-$VER.tar.xz
tar xf curl-$VER.tar.xz && cd curl-$VER
./configure --prefix=/usr/local --with-ssl --with-zlib
make -j$(nproc)
sudo make install
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
curl --version
/usr/local/bin/curl --version

配置linuxbrew使用指定版本的curl

echo 'export HOMEBREW_CURL_PATH=/usr/local/bin/curl' >> ~/.bash_profile
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
# 若使用 ~/.bashrc 或 zsh,请相应写入 ~/.bashrc 或 ~/.zshrc
source ~/.bash_profile

安装linuxbrew

此处使用 bash 举例,如果你是 zsh 等环境,可以参见 homebrew | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

如果是海外环境,直接使用 /bin/bash -c "$(curl -fsSL https://github.com/Homebrew/install/raw/master/install.sh)"​ 即可

# 配置brew镜像源
echo >> ~/.bashrc
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/brew.git"' >> ~/.bashrc
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/homebrew-core.git"' >> ~/.bashrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.aliyun.com/homebrew-bottles/api"' >> ~/.bashrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.aliyun.com/homebrew/homebrew-bottles"' >> ~/.bashrc
source ~/.bashrc
export HOMEBREW_INSTALL_FROM_API=1
# 从阿里云下载安装脚本并安装 Homebrew 
git clone https://mirrors.aliyun.com/homebrew/install.git brew-install
# 开始执行安装脚本,如果提示curl版本过低,参考前面更新curl
/bin/bash brew-install/install.sh
rm -rf brew-install
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
source ~/.bashrc

配置linuxbrew

使用命令 brew install patchelf​ 安装 patchelf

然后执行如下命令

echo 'VSCODE_SERVER_CUSTOM_GLIBC_PATH=/home/linuxbrew/.linuxbrew/opt/glibc/lib' >> ~/.ssh/environment
echo 'VSCODE_SERVER_PATCHELF_PATH=/home/linuxbrew/.linuxbrew/bin/patchelf' >> ~/.ssh/environment
echo 'VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/home/linuxbrew/.linuxbrew/opt/glibc/lib/ld-linux-x86-64.so.2' >> ~/.ssh/environment
sudo sed -i 's|#PermitUserEnvironment no|PermitUserEnvironment yes|g' /etc/ssh/sshd_config
sudo systemctl restart sshd

参考

vscode 1.99 后无法连接到 ubuntu 18.04 | Akkuman 的技术博客

题外话:没想到你是使用论坛程序写博客,感觉也挺合适

关于低版本的 curl,github 有不少那种 curl static binary 可以下载,同类的,推荐一个我之前参与过的项目: PkgForge Index

除了可以使用 soar 安装,也可以直接下载 https://pkgs.pkgforge.dev/dl/bincache/x86_64-linux/curl/stunnel/curl/raw.dl

这就是一个 curl 的预编译的静态二进制版本,放到系统 PATH 下即可

另:后续我多做了一些测试,homebrew 在 centos6 上不受支持,因为它依赖的 glibc 是 2.13,不过这在大多数情况下不构成问题

1 个赞

太强了:+1: