当前位置: 首页 > news >正文

【日常开发】 VSCode Remote SSH 在 Ubuntu 18.04 (GLIBC 2.27) 上的解决方案

VSCode Remote SSH 在 Ubuntu 18.04 GLIBC 2.27上的解决方案背景解决思路第一步检查编译依赖第二步非 root 编译安装 GLIBC 2.28第三步安装 patchelf第四步准备 libstdc 和 libgcc第五步patch VSCode node 二进制第六步跳过 VSCode GLIBC 版本预检查第七步持久化配置遇到的问题与解决问题 1configure 报错 GLIBC cannot be compiled without optimization问题 2make install 没有写入权限问题 3patchelf 后 node 报错缺少 libstdc问题 4patchelf 后 node 报错缺少 libgcc_s问题 5VSCode 连接直接报错不给 patch 机会问题 6VSCode 反复下载覆盖 node问题 7用 ld 运行静态链接的 CLI 导致 Segfault最终自动化脚本原理总结参考背景VSCode 1.121.0 要求远程服务器 GLIBC 2.28而 Ubuntu 18.04 自带 GLIBC 2.27导致无法连接。在AI 的加持了 方案验证通过记录下遇到的问题。系统环境OS: Ubuntu 18.04GLIBC: 2.27用户: 非 rootVSCode: 1.121.0 (commit f6cfa2ea)解决思路问题VSCode Server 需要 GLIBC 2.28系统只有 2.27方案非 root 用户本地编译安装 GLIBC 2.28用 patchelf 修改 VSCode node 二进制的动态链接器路径创建 /tmp/vscode-skip-server-requirements-check 跳过版本预检查第一步检查编译依赖gcc --version make --version第二步非 root 编译安装 GLIBC 2.28下载源码cd /tmp wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz tar -xf glibc-2.28.tar.gz编译安装到用户目录mkdir /tmp/glibc-build cd /tmp/glibc-build /tmp/glibc-2.28/configure \ --prefix/home/$USER/opt/glibc-2.28 \ --disable-werror make -j$(nproc) make install验证安装ls ~/opt/glibc-2.28/lib/ # 应该看到 libc.so.6, ld-linux-x86-64.so.2 等 ~/opt/glibc-2.28/lib/libc.so.6 --version # 应该输出 GNU C Library 2.28第三步安装 patchelf# 下载预编译版本 mkdir -p /tmp/bin wget -O /tmp/bin/patchelf \ https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz # 如果下载的是 tar.gz cd /tmp wget https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz tar -xf patchelf-0.18.0-x86_64.tar.gz cp bin/patchelf /tmp/bin/patchelf chmod x /tmp/bin/patchelf # 验证 patchelf --version第四步准备 libstdc 和 libgccVSCode node 还依赖 libstdc 和 libgcc_s需要复制到 glibc-2.28/lib# 复制 libstdccp/usr/lib/x86_64-linux-gnu/libstdc.so.6.0.25~/opt/glibc-2.28/lib/ln-sf~/opt/glibc-2.28/lib/libstdc.so.6.0.25\~/opt/glibc-2.28/lib/libstdc.so.6# 复制 libgcc_s cp/lib/x86_64-linux-gnu/libgcc_s.so.1~/opt/glibc-2.28/lib/# 验证 ls-la~/opt/glibc-2.28/lib/|grep-Estdc|gcc第五步patch VSCode node 二进制#VSCode 下载 server 后 patch nodeCOMMITf6cfa2ea2403534de03f069bdf160d06451ed282NODE_PATH~/.vscode-server/cli/servers/Stable-${COMMIT}/server/node patchelf \--set-rpath~/opt/glibc-2.28/lib \--set-interpreter~/opt/glibc-2.28/lib/ld-linux-x86-64.so.2\ ${NODE_PATH}# 验证 ${NODE_PATH}-v第六步跳过 VSCode GLIBC 版本预检查VSCode CLI 在启动 server 前会检查系统 GLIBC 版本通过创建特定文件跳过touch/tmp/vscode-skip-server-requirements-check原理 在 VSCode CLI 二进制的字符串中发现这个路径说明官方预留了跳过检查的机制。第七步持久化配置cat~/.bashrcEOF#VSCode Remote SSH GLIBC 修复touch/tmp/vscode-skip-server-requirements-check find~/.vscode-server/cli/servers/-namenode|whileread f;dopatchelf \--set-rpath~/opt/glibc-2.28/lib \--set-interpreter~/opt/glibc-2.28/lib/ld-linux-x86-64.so.2\$f2/dev/null doneEOF遇到的问题与解决问题 1configure 报错 GLIBC cannot be compiled without optimization原因 在源码目录内执行了 configure解决 必须在单独的 build 目录执行# 错误做法 cd/tmp/glibc-2.28./configure # ❌ # 正确做法 mkdir/tmp/glibc-build cd/tmp/glibc-build/tmp/glibc-2.28/configure # ✅问题 2make install 没有写入权限原因非 root 用户无法写入系统目录解决–prefix/home/$USER/opt/glibc-2.28 安装到用户目录/tmp/glibc-2.28/configure \--prefix/home/$USER/opt/glibc-2.28\ # ✅ 用户目录--disable-werror问题 3patchelf 后 node 报错缺少 libstdc错误error while loading shared libraries: libstdc.so.6: No such file or directory原因 patchelf 修改了 rpath 后只从 ~/opt/glibc-2.28/lib 加载库但该目录没有 libstdc解决# 查找系统的 libstdc ls -la /usr/lib/x86_64-linux-gnu/libstdc* # lrwxrwxrwx libstdc.so.6 - libstdc.so.6.0.25 # -rw-r--r-- libstdc.so.6.0.25 # 复制实体文件 创建符号链接 cp /usr/lib/x86_64-linux-gnu/libstdc.so.6.0.25 ~/opt/glibc-2.28/lib/ ln -sf ~/opt/glibc-2.28/lib/libstdc.so.6.0.25 \ ~/opt/glibc-2.28/lib/libstdc.so.6问题 4patchelf 后 node 报错缺少 libgcc_s错误error while loading shared libraries: libgcc_s.so.1: No such file or directory解决cp /lib/x86_64-linux-gnu/libgcc_s.so.1 ~/opt/glibc-2.28/lib/问题 5VSCode 连接直接报错不给 patch 机会error This machine does not meet prerequisites-find GLIBCv2.28.0(but found v2.27.0instead)exitCode207原因 VSCode CLI 在启动 server 前做了 GLIBC 版本预检查直接拒绝node 根本没有被执行解决 通过分析 CLI 二进制字符串找到官方跳过机制# 分析 CLI 二进制发现关键字符串 strings~/.vscode-server/code-f6cfa2ea...|grep-iskip# 输出/tmp/vscode-skip-server-requirements-check # 创建该文件即可跳过检查 touch/tmp/vscode-skip-server-requirements-check问题 6VSCode 反复下载覆盖 node原因 node 启动失败后VSCode 认为安装损坏删除 servers 目录重新下载形成死循环解决 两步并行先创建 skip 文件让 VSCode 跳过预检查下载完成后立即 patch node# 监控脚本另开终端whiletrue;dofind~/.vscode-server/cli/servers/-namenode|whileread f;dopatchelf \--set-rpath~/opt/glibc-2.28/lib \--set-interpreter~/opt/glibc-2.28/lib/ld-linux-x86-64.so.2\$f2/dev/nullechopatched: $fdone sleep1done问题 7用 ld 运行静态链接的 CLI 导致 Segfault# 错误尝试~/opt/glibc-2.28/lib/ld-linux-x86-64.so.2\~/.vscode-server/code-f6cfa2ea...# Segmentation fault原因 VSCode CLI 是静态链接的自带运行时用外部 ld 加载会冲突ldd~/.vscode-server/code-f6cfa2ea...#staticallylinked ← 静态链接不需要 patch最终自动化脚本cat~/fix-vscode.shEOF#!/bin/bash#VSCode Remote SSH GLIBC 修复脚本# 适用于 Ubuntu18.04(GLIBC2.27)GLIBC_LIB~/opt/glibc-2.28/lib #1.跳过 VSCode GLIBC 预检查 touch/tmp/vscode-skip-server-requirements-check echo✓ 已创建 skip 文件#2.patch 所有 VSCode server node find~/.vscode-server/cli/servers/-namenode|whileread f;dopatchelf \--set-rpath $GLIBC_LIB \--set-interpreter $GLIBC_LIB/ld-linux-x86-64.so.2\$f2/dev/nullecho✓ patched: $fdone echo完成EOFchmodx~/fix-vscode.sh # 加入.bashrc 开机自动执行 echobash ~/fix-vscode.sh~/.bashrc原理总结VSCode 连接流程修复后 Windows VSCode │ ▼ SSH 连接 远程服务器 │ ▼ 运行~/.vscode-server/code-xxx静态链接不受 GLIBC 限制 │ ▼ 检查/tmp/vscode-skip-server-requirements-check ← 文件存在跳过检查 │ ▼ 下载并解压 vscode-server-linux-x64.tar.gz │ ▼ 运行 server/node已被 patchelf 修改为使用~/opt/glibc-2.28 │ ▼ 连接成功 ✅参考GLIBC 官方下载https://ftp.gnu.org/gnu/glibc/patchelf GitHubhttps://github.com/NixOS/patchelf解决 VSCode Remote SSH 远程连接 glibc 高版本依赖问题
http://www.rkmt.cn/news/1383061.html

相关文章:

  • 猫抓高效使用指南:5步专业掌握网页资源嗅探
  • 机器学习在射电天文数据分类中的应用:以MIGHTEE巡天SFG/AGN分类为例
  • 浩卡联盟怎么开一级代理权限?官方手把手教你注册一级0抽成(官方邀请码16888) - 流量卡代理招商
  • 0 基础跨行斩获万元薪资,真正拉开差距的是破局思维
  • 我因为不会汇报,错过了3次晋升机会,希望你别重蹈覆辙
  • 高速时间交织型模数转换器设计【附方案】
  • ATtiny TPI编程实战:USBasp/AVRISP MKII烧录ATtiny4/5/9/10全攻略
  • 重载工业机械臂数据逻辑攻击及检测【附仿真】
  • AI当代,怎么利用好AI工具管理好项目沟通及沟通计划?
  • 利用Taotoken实现Agent工作流中多模型灵活调度
  • Color-X卡乐瓷砖核心介绍(品牌理念+产品体系+品牌供应链与渠道布局+产品核心优势+荣誉资质+市场定位) - 寻茫精选
  • 意大利品牌Color-X卡乐瓷砖介绍:从美学优势到场景适配的深度解析 - 寻茫精选
  • 多级缓存
  • 人工智能怎么做Excel数据分析?2026年最值得入手的AI做表工具盘点
  • 找工厂客户的数据怎么选?通用名录平台和垂直工厂数据平台的区别
  • 嵌入式研究工程师全覆盖技能清单|从入门到资深的完整技术树
  • 免费音乐解锁终极指南:如何在浏览器中轻松解密QQ音乐、网易云音乐等加密格式
  • 20244321 2025-2026-2 《Python程序设计》实验四报告
  • Python 语法糖详解:让代码简洁优雅的编程小技巧
  • 搜维尔科技:“2026第五届中国力触觉技术及应用会议”将于2026年5月22-24日在京举办,我司携设备参展!
  • BetterJoy:让Switch手柄在Windows上重获新生的终极解决方案
  • 操作符从浅入深的讲解
  • NBTExplorer:让Minecraft数据编辑从专业工具变成人人可用的可视化平台
  • 告别多头对接!DMXAPI 为企业打造国产大模型 “统一入口”
  • 输电线路在线监测系统|架空线路安全运行的“第一道防线“!
  • WPF控件颜色集合
  • 牛客周赛Round145
  • 如何在Windows 11上免费安装安卓子系统:完整简易指南
  • 无穿戴自主定位,规避矿场人员管控各类风险
  • 5分钟掌握OBS多平台直播:obs-multi-rtmp插件一键配置终极指南