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

#vscode# #SSH远程# #Ubuntu 16.04# 远程ubuntu旧版Linux

背景:

Remote Development FAQ

最新的vscode需要glibc 2.28+支持,但是ubuntu16可能不支持(glibc 2.28+),因此无法直接连接报错连接失败!


自Visual Studio Code 1.99起,VSCode Remote - SSH Server由于运行库依赖更新,会无法连接到旧版Linux发行版上。但是好在官方在文档中还给了临时解决办法。这里我搬运一下,其中遇到了一些问题参考了Ssh Remote have problem in old server

方案 1 - 安装历史版本:

下载合适的版本,不建议下载最新的,最新的vscode不支持(glibc 2.28+)

下载地址:
历史下载地址:https://code.visualstudio.com/updates/ 链接进入显示如下:

下载最后一个支持ubuntu1604 的版本 1.85 系列或者之前的都可以。但是有可能不支持最新的插件

November 2023 (version 1.85) 

将程序解压出来,在应用程序中新建一个文件夹,将解压后的程序放入其中。为了与另一个版本区分,我把app名字改成了Visual Studio Code_1.85.2。


在app的同级文件夹下创建code-portable-data文件夹,运行如下命令,将app移除quarantine属性。

cd app所在路径
xattr -dr com.apple.quarantine XXX.app



现在你就可以打开这个程序,不会与原有 vscode 冲突了

打开后,需要把自动更新的设置取消。

方案 2 -  更新服务器部分库:

编译安装crosstool-NG

sudo apt-get install -y texinfo
sudo apt-get install -y libtool
sudo apt install libtool-bin
sudo apt-get install -y bison
sudo apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip patch rsync meson ninja-build
mkdir remote_ssh_ubuntu_1604
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.bz2
tar -xjf crosstool-ng-1.26.0.tar.bz2 && cd crosstool-ng-1.26.0
./configure && make && sudo make install


用crosstool-NG编译新版sysroot,其中包含所需的新版运行库

mkdir toolchain-dir && cd toolchain-dir
wget https://github.com/microsoft/vscode-linux-build-agent/raw/refs/heads/main/x86_64-gcc-8.5.0-glibc-2.28.config
mv x86_64-gcc-8.5.0-glibc-2.28.config .config
ct-ng menuconfig

# 在menuconfig图形菜单中,将“Operating System”选项下的“Version of linux”改为不高于你系统的Linux内核版本。你的版本可以通过uname -a命令查看,比如我这里就改为了4.14.319。选择好以后在底部菜单先Save再Exit。

  

ct-ng build

# 这个过程需要下载编译一堆东西,耐心等待二十分钟

下载安装,测试patchelf

wget https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz
sudo tar -zxf patchelf-0.18.0-x86_64.tar.gz -C /
gcc hello_world.c
./a.out
patchelf --set-interpreter /path/to/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib/ld-linux-x86-64.so.2 --set-rpath /path/to/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib64 a.out
./a.out
ldd a.out

设置环境变量

export VSCODE_SERVER_CUSTOM_GLIBC_LINKER=/path/to/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib/ld-linux-x86-64.so.2
export VSCODE_SERVER_CUSTOM_GLIBC_PATH=/path/to/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib64
export VSCODE_SERVER_PATCHELF_PATH=/bin/patchelf

将上述内容放到你~/.bashrc文件的开头!一定是开头!


现在可以在VSCode上通过SSH尝试连接到ubuntu_1604

http://www.dtcms.com/a/285320.html

相关文章:

  • 第三章自定义检视面板_创建自定义编辑器类_实现自定义检视面板中的GUI内容(本章进度(1/9))
  • 「源力觉醒 创作者计划」_巅峰对话:文心 4.5 vs. DeepSeek / Qwen 3.0 深度解析(实战优化版)
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - jieba库分词简介及使用
  • CVSS 3.1权限要求(PR)深度解读
  • 信息论至AI实践:交叉熵的原理全景与应用深度解析
  • 苹果ios系统IPA包企业签名手机下载应用可以有几种方式可以下载到手机?
  • 时序数据库 Apache IoTDB 实战:基于 Kubernetes 的部署运维全指南
  • 固件OTA升级常见问题
  • 9. isaacsim4.2教程-ROS加相机/CLOCK
  • Onload 用户指南 (UG1586)-笔记
  • (数据结构)线性表(上):SeqList 顺序表
  • Mysql数据库——增删改查CRUD
  • k8s:利用kubectl部署postgis:17-3.5
  • Java面向对象核心揭秘:从构造到多态的实战指南
  • Java List 集合详解:从基础到实战,掌握 Java 列表操作全貌
  • 代码随想录算法训练营65期第22天
  • 五分钟学会大数定律【笔记】
  • day055-Dockerfile与常用指令
  • 上网行为管理之内容审计实验
  • 数据结构-2(链表)
  • 基于强化学习的人机协同教学角色分配优化与课堂参与度建模研究
  • C++拷贝构造
  • 鸿蒙UI自动化测试框架Hypium的使用指南
  • Netty入门学习
  • java-字符串和集合
  • (自用)补充说明2
  • 《python语言程序设计》2018版第8章8题编写函数实现二进制转十进制(字符串变整数)!!整数没法进行下标
  • 基于MATLAB的极限学习机ELM的数据回归预测方法应用
  • 用python可视化分析二次元经济的爆发
  • python网络爬虫(第一步:网络爬虫库、robots.txt规则(防止犯法)、查看获取网页源代码)