智能助手网
标签聚合 Code

/tag/Code

linux.do · 2026-04-18 17:07:58+08:00 · tech

起因 今天在使用WSL上的Centos时, 发现Vscode远程连接上不上了, 然后想起来vscode之前下载claude插件自动更新了一次, 导致它的版本变成了v1.106.0, 然后就连不上了. 从 VS Code 1.99(2025年3月发布) 开始,官方预编译的 VS Code Server 对 Linux 发行版的系统依赖做了升级,要求远端服务器必须满足: glibc >= 2.28 libstdc++ >= 3.4.25 以及对应的动态链接环境 ssh远程连接时错误信息如下: [2026-04-18 03:33:45.663] Starting server: /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/bin/code-server --host=127.0.0.1 --port=0 --connection-token=1869292326-2464295744-3154885190-4149685785 --use-host-proxy --without-browser-env-var --disable-websocket-compression --accept-server-license-terms --telemetry-level=all [2026-04-18 03:33:45.664] /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node) [2026-04-18 03:33:45.664] /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node) [2026-04-18 03:33:45.664] /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node) [2026-04-18 03:33:45.664] /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /home/user/.vscode-server/bin/ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57/node) 解决方法一: 官方推荐的自定义运行库法 code.visualstudio.com Can I run VS Code Server on older Linux distributions? - Remote Development FAQ This article covers frequently asked questions for each of the Visual Studio Code Remote Development extensions. See the SSH, Containers, and WSL articles for more details on setting up and working with each of their respective capabilities. Or try... 以下是AI关于这个文档的解释: VS Code 1.99 之后,官方发的 VS Code Server 二进制 默认要求远端系统有较新的: glibc >= 2.28 libstdc++ >= 3.4.25 以及相应动态链接环境 如果你的老服务器系统本身太旧,比如 CentOS 7,没有这些库,Server 本体会启动失败 这时候可以额外准备一套“较新的运行库目录”,让 VS Code Server 不要使用系统自带旧 glibc,而是改为加载你提供的那一套新库. 这个“较新的运行库目录”,官方建议你用 Crosstool-ng 去构建,这就是文档里说的 sysroot 准备工具: v0.18.x 以上的 patchelf. Release 0.18.0 · NixOS/patchelf · GitHub 在 rpmfind.net 中找到所需要的 glibc 2.28 地址: RPM resource glibc 选择AlmaLinux 8.10 BaseOS for aarch64 glibc-2.28-251.el8_10.31.aarch64.rpm 在 rpmfind.net 中找到所需要的 libstdc++ 地址: https://www.rpmfind.net/linux/almalinux/8.10/BaseOS/x86_64/os/Packages/libstdc++-8.5.0-28.el8_10.alma.1.i686.rpm 选择AlmaLinux 8.10 BaseOS for aarch64 libstdc++-8.5.0-28.el8_10.alma.1.i686.rpm 不要直接安装 rpm!!! mkdir -p /home/user/lib/vscode_server_linux_root mv glibc-2.28-251.el8.x86_64.rpm /home/user/lib/vscode_server_linux_root/ mv libstdc++-8.5.0-21.el8.x86_64.rpm /home/user/lib/vscode_server_linux_root/ cd /home/user/lib/vscode_server_linux_root # 将rpm文件解压到当前目录 rpm2cpio glibc-2.28-251.el8.x86_64.rpm | cpio -idmv rpm2cpio libstdc++-8.5.0-21.el8.x86_64.rpm | cpio -idmv # 检查下 so 文件中的 ABI 兼容版本是否符合 VSCode 或者 Node.js 的要求 strings ./usr/lib/libc.so.6 | grep -E '^GLIBC_[0-9.]+' | sort strings ./usr/lib/libstdc++.so.6 | grep -E '^GLIBCXX_[0-9.]+' | sort # 设置环境变量, 两个环境变量都试一下 export VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/home/user/my_lib/vscode_server_linux_root/usr/lib # export VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/home/flipped/my_lib/vscode_server_linux_root/usr/lib/ld-linux.so.2 export VSCODE_SERVER_CUSTOM_GLIBC_PATH=/home/user/my_lib/vscode_server_linux_root/usr/lib export VSCODE_SERVER_PATCHELF_PATH=/home/user/my_lib/vscode_server_linux_root/bin 理论上这样之后, node 应该可以正常启动了, 但是我在wsl上的centos7.9进行测试时, 即使设置了环境变量, 服务器上的node也没有到我指定的目录下去找2.28的glibc. 然后我也尝试了手动patch node. 但发现patch后, node --version 都运行不了. [!NOTE] 不一定起作用 若环境变量不生效,可尝试直接修改 VS Code Server 内嵌 Node.js 的动态链接路径: patchelf --set-interpreter ${CUSTOM_LIB_DIR}/usr/lib64/ld-linux-x86-64.so.2 \ --set-rpath ${CUSTOM_LIB_DIR}/usr/lib64 \ ~/.vscode-server/bin/<VSCode版本号>/node 解决方法2: 第三方补丁工具 从社区仓库下载与本地 VS Code 版本匹配的包: 仓库地址: MikeWang000000/vscode-server-centos7 查看本地 VS Code 版本:点击左下角齿轮 → 关于 → 复制版本哈希(如 ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57 ) # 1. 创建VS Code Server目录(若已存在则跳过) mkdir -p ~/.vscode-server # 2. 解压下载的预补丁包 tar xzf vscode-server_*.tar.gz -C ~/.vscode-server --strip-components 1 # 3. 执行补丁脚本 ~/.vscode-server/code-latest --patch-now # 4. 替换官方内嵌的Node.js(替换为预编译的兼容版本) cp -f ~/.vscode-server/cli/servers/Stable-<版本哈希>/server/node \ ~/.vscode-server/bin/<版本哈希>/node 使用这个方案, 我电脑上能够连接到centos了, 但是远程连接后, 无法在vscode的集成终端中使用 code a.log 打开服务器上的文件, 报错如下: user@user:test$ code . Unable to connect to VS Code server: Error in request. Error: connect ENOENT /run/user/1000/vscode-ipc-d2af735a-73ee-499c-9f8c-48fa19a6199e.sock at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1637:16) { errno: -2, code: 'ENOENT', syscall: 'connect', address: '/run/user/1000/vscode-ipc-d2af735a-73ee-499c-9f8c-48fa19a6199e.sock' } 除了上面给出的预编译后的node文件, 在下面这个issue里面针对centos上运行v18以后的nodejs的问题, 也提供了一个预编译好的版本 github.com/nodejs/node Node.js is showing error "node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)" 已打开 05:40AM - 28 Mar 24 UTC 已关闭 08:38PM - 17 May 25 UTC yogeshlc ### Version node-v20.11.0-linux-x64.tar.xz ### Platform Linux yogVM 5.4.17-21 … 36.325.5.1.el7uek.x86_64 ### Subsystem _No response_ ### What steps will reproduce the bug? - Extract node.js tar at location /usr/local - check node --version cmd which is failing with error Error: node --version node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node) node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node) node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node) ### How often does it reproduce? Is there a required condition? _No response_ ### What is the expected behavior? Why is that the expected behavior? node --version v20.11.0 ### What do you see instead? node --version node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node) node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node) node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node) ### Additional information _No response_ 但我用这个, 虽然也能正常连接, 但无法打开vscode中的集成终端. 报错如下. 结尾 佬友们帮忙看看, 为什么我使用官方文档里面的方法, 设置环境变量之后还是没有办法让服务器上的node到我指定的目录下去找glibc. 2 个帖子 - 2 位参与者 阅读完整话题