解决新版本vscode的remote ssh不支持ubuntu18.04问题
1. 背景
微软官方现在已经完全停止vscode server对ubuntu18.04的支持,目前使用remote ssh连接ubuntu18.04服务器会出现libc版本过低不支持的问题。
2. 解决思路
主要是vscode server的node依赖libc>=2.28,原理上更新libc版本即可,但是考虑到升级系统的libc容易出现问题,并且麻烦。这里考虑通过conda安装新版libc和指定node的runpath指定优先库搜索路径来解决。
3. 参考解决方案
3.1 首先创建一个conda环境
推荐miniconda,创建环境并下载`sysroot_linux-64`
conda env create -n libc_env
conda activate libc_env
conda install sysroot_linux-64=2.28 -c conda-forge
参考conda list结果:
3.2 修改node的runpath
首先确认lib所在路径,
{path_to_minoconda}/envs/{your_env_name}/x86_64-conda-linux-gnu/sysroot/lib64
然后确定vscode-server的node所在路径,
~/.vscode-server/bin/{commit}/bin
其中commit是版本id,可以在vscode-help-about下查看,或者直接cd到`~/.vscode-server/bin/`下看最新的目录即可。
进入这个路径后,使用patchelf来修改node的rpath和interpreter:
# 注意 请修改为自己的路径
patchelf --set-rpath /home/betteryimi/miniconda3/envs/new_cpp_build/x86_64-conda-linux-gnu/sysroot/lib:/home/betteryimi/miniconda3/envs/new_cpp_build/x86_64-conda-linux-gnu/sysroot/lib64 ./node
patchelf --set-interpreter /home/betteryimi/miniconda3/envs/new_cpp_build/x86_64-conda-linux-gnu/sysroot/lib64/ld-linux-x86-64.so.2 ./node
至此就ok啦,不出以外的话重新使用vscode远程连接ubunt18就能正常使用了,有问题欢迎讨论,如果对你有帮助的话希望能点个赞支持:
以下是前后对比图:
修改后正常连接: