f1ynnv2 最近的时间轴更新
f1ynnv2

f1ynnv2

V2EX 第 247798 号会员,加入于 2017-08-10 00:40:33 +08:00
根据 f1ynnv2 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
f1ynnv2 最近回复了
39 天前
回复了 jeesk 创建的主题 Chrome chromium 到底是用了什么技术?
v2 我用最新版 safari 访问就是这样,大概率失败,ff 就没失败过
47 天前
回复了 Winner4good 创建的主题 Apple apple vision pro 作为纯显示器
@locoz Immersed 之前是搞串流软件的吗?哪里有它家新的头显介绍吗?如果参作为显示器使用,我很有兴趣。
@litguy 我们有一套成熟产品的嵌入式开发环境,Ti 给的 SDK 只能跑在 ubuntu16.04 上
如果其他人也有这需求,参考下面完整的步骤吧:


1. 问题
VSCode 自 1.86 开始,服务器端的 vscode-server 里的 node 要求 glibc >=2.28, libstdc++ >= 3.4.25, 这样导致一大批老系统无法使用 vsocde 的 SSH 开发功能。https://code.visualstudio.com/docs/remote/linux#_remote-host-container-wsl-linux-prerequisites

2. 解决方案
采用 patchelf ,单独修改目标机上 vscode-server 的 node 对上述两个库的依赖 参考: https://zhuanlan.zhihu.com/p/551770477


2.1 确认 node 依赖的库版本

根据客户机上 VScode 的版本 commit 号找到服务器上对应的目录,一般是~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/这类形式
直接运行这个目录下的 node 会报错,可以获取依赖的库版本号:

此外还可以从 https://code.visualstudio.com/docs/remote/linux#_remote-host-container-wsl-linux-prerequisites 查询开发库版本的依赖。

2.2 下载 patchelf

https://github.com/NixOS/patchelf

2.3 下载 glibc

https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/

glibc 的软件包名前缀为 libc6, 本次下载文件为:libc6_2.39-0ubuntu1_amd64.deb

2.4 下载 glibcxx

从这里 https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html 查找需要的 gcc 版本,然后在 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/gcc-<版本号>/下面找到对应的包,本次使用的是 libstdc++6_13.1.0-2ubuntu2~23.04_amd64.deb

3. 服务器端准备
3.1 上述三个文件都上传到服务器
3.2 解压
sudo apt install zstd
tar -xzf patchelf-0.18.0-x86_64.tar.gz

ar -xv libc6_2.39-0ubuntu1_amd64.deb
tar -I zstd -xvf data.tar.zst

ar -xv libstdc++6_13.1.0-2ubuntu2~23.04_amd64.deb
tar -I zstd -xvf data.tar.zst

3.3 归集所有 lib 库

将解压得到的 lib/x86_64-linux-gnu/*和 usr/lib/x86_64-linux-gnu/*都复制到统一的目录下,本次放在~/libs 下:

cp -r lib/x86_64-linux-gnu/* ~/libs/
cp -r usr/lib/x86_64-linux-gnu/* ~/libs/

3.4 使用 patchelf

cd ~/libs
~/patchelf/bin/patchelf --set-rpath `pwd` ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/node
~/patchelf/bin/patchelf --set-interpreter `pwd`/ld-linux-x86-64.so.2 ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/node

3.5 使用 ldd 命令确认库已替换

ldd ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/node

3.6 检查替换后能正常工作

~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/node ,不能报错

3.7 屏蔽服务器端库检查

touch /tmp/vscode-skip-server-requirements-check

4. 重新连接 vscode
vscode 每次更新版本后,服务端都要到对应目录下找到对应的 node 执行上面的步骤。
这次下载的 glibc 和 glibcxx 版本都很高,可以存档供以后每次 vscode 更新版本时使用,老系统可以再顶几年。
@exch4nge 感谢,我也成功了,是参考这篇文章: https://zhuanlan.zhihu.com/p/551770477

不过这篇文章是随便找了个 node 来演示的,实际上要按照你说的这个找到对应版本的 vscode-server 的 node 。
我的系统是 ubuntu16.04 ,使用 vscode 1.86 macos 版本来测试成功了。用到的几个文件放在这里供大家参考吧:
libc6_2.39-0ubuntu1_amd64.deb
libstdc++6_13.1.0-2ubuntu2~23.04_amd64.deb

对了,后面解压这些.deb 文件可能会报错,这样解决:
```
tar -xzf patchelf-0.18.0-x86_64.tar.gz

ar -xv libc6_2.39-0ubuntu1_amd64.deb
tar -I zstd -xvf data.tar.zst

ar -xv libstdc++6_13.1.0-2ubuntu2~23.04_amd64.deb
tar -I zstd -xvf data.tar.zst
```
@f1ynnv2 重新试了一下,这个方法不可行。另一个新版本的 vscode 更新插件后,会影响 1.85.2 的插件导致 remote-ssh 不可用。
试了一下 macOS 下可以下载个最后的 1.85.2 版本,放在某个目录继续使用。只要不追求在 LaunchPad 里同时有两个图标同时出现,其实不需要任何修改。
@exch4nge 能否请写个详细说明,感谢。
54 天前
回复了 f1ynnv2 创建的主题 macOS macOS 上有没有支持 webdav 的音乐播放器
找到了 Evermusic ,完美。
内购 RMB98
54 天前
回复了 Soaringflight 创建的主题 Linux Linux 中国要停更了
对,中文社区慢慢凋零了,很多领域想找个交流的地方都找不到,只能零散的到处搜索。以往高校还有 BBS ,公网上各类社区,估计也和政策有关,政策不鼓励任何人群的聚焦,线下线上。。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5452 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.