使用 Linux 进行远程开发
Linux 是一个高度可变的环境,大量的服务器、容器和桌面发行版使得很难知道支持哪些内容。Visual Studio Code 远程开发对您将连接到的特定主机/容器/WSL 发行版有先决条件。
当连接到以下最新的稳定/LTS 版本时,已知这些扩展可以工作
- Ubuntu 64 位 x86、ARMv8l (AArch64) (20.04+)
- Debian 64 位 x86、ARMv8l (AArch64) (Buster/10+)
- 树莓派 OS ARMv7l (AArch32) 32 位 (Buster/10+)(以前称为 Raspbian)
- CentOS/RHEL 64 位 x86 (8+)
- Alpine Linux 64 位 x86 容器或 WSL 主机 (3.16+)(在开发容器、WSL 中)
还支持以下非 Linux SSH 主机
- Windows 10/11/Server 2016/2019 SSH 主机 (1803+),使用官方 OpenSSH 服务器。
- macOS 10.14+ (Mojave) SSH 主机,其中启用了远程登录。
但是,如果您使用的是非标准配置或 Linux 的下游发行版,则可能会遇到问题。本文档提供有关要求以及帮助您启动并运行的提示,即使您的配置仅受社区支持。
请注意,其他扩展可能具有超出此处列出的依赖项。某些扩展还包含编译过的本机代码,这些代码可能无法在 Alpine Linux、ARMv7 (AArch32) 或 ARMv8 (AArch64) 上运行。因此,这些平台被视为“预览”版。如果您遇到仅在特定扩展上发生的问题,请联系扩展的作者以获取有关其本机依赖项的信息。
本地 Linux 先决条件
如果您在本地运行 Linux,则VS Code 先决条件是大多数要求的驱动因素。
此外,特定的远程开发扩展还有其他要求
- 远程 - SSH:
ssh
需要在路径中。shell 二进制文件通常位于openssh-client
包中。 - 开发容器:Docker CE/EE 18.06+ 和 Docker Compose 1.21+。按照适用于您的发行版的 Docker CE/EE 的官方安装说明进行操作。如果您使用的是 Docker Compose,请按照安装 Docker Compose 指令进行操作。(请注意,不支持 Ubuntu Snap 包,并且发行版中的包可能已过期。)
docker
和docker-compose
也必须在路径中。但是,如果您使用远程主机,则 Docker 无需运行。您可以在开发容器文档中了解有关配置 Docker 的更多方法。
远程主机/容器/WSL Linux 先决条件
平台先决条件主要由Node.js 运行时(以及扩展的V8 JavaScript 引擎)的版本驱动,该运行时在自动安装在每个远程终结点的服务器组件中提供。此服务器还具有一组相关的本机 Node 模块,需要针对每个目标进行编译和测试。鉴于这些要求,基于 64 位 x86 glibc 的 Linux 发行版目前提供最佳支持。
您可能会在具有本机依赖项的某些扩展中遇到问题,这些问题发生在基于 ARMv7l (AArch32)/ARMv8l (AArch64) glibc 的主机、容器或 WSL 以及基于 64 位 x86 musl 的 Alpine Linux 上。对于 ARMv7l/ARMv8l,扩展可能仅包含扩展中本机模块或运行时的 x86_64 版本。对于 Alpine Linux,由于 Alpine Linux (musl
) 和其他发行版 (glibc
) 中实现 libc
的方式之间存在根本差异,因此包含的本机代码或运行时可能无法工作。在这两种情况下,扩展都需要通过为这些其他目标编译/包含二进制文件来选择支持这些平台。如果您遇到某个扩展未按预期工作,请向相应的扩展作者提出问题,要求其提供支持。
发行版 | 基本要求 | 远程 - SSH 要求 | 备注 |
---|---|---|---|
常规 | 内核 >= 4.18,glibc >= 2.28,libstdc++ >= 3.4.25,tar | OpenSSH 服务器、bash 和 curl 或 wget |
运行 ldd --version 以检查 glibc 版本。运行 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 以查看 libstdc++ 3.4.25 是否可用。 |
Arm32 的常规 | libatomic1 |
无其他要求。 | |
Ubuntu 20.04+、Debian 10+、树莓派 OS Buster/10+ 和下游发行版 | libc6 libstdc++6 ca-certificates tar |
openssh-server bash 和 curl 或 wget |
需要内核 >= 4.18,glibc >= 2.28,libstdc++ >= 3.4.25。 |
RHEL/CentOS 8+ | glibc libgcc libstdc++ ca-certificates tar |
openssh-server bash 和 curl 或 wget |
需要内核 >= 4.18,glibc >= 2.28,libstdc++ >= 3.4.25。 |
Alpine Linux 3.16+ | musl libgcc libstdc++ 。musl >= 1.2.3,不需要 glibc。 |
尚不支持。 | 在开发容器和 WSL 中受支持。由于扩展本机代码中存在 glibc 依赖项,因此在容器中安装的扩展可能无法工作。 |
openSUSE Leap/SUSE Linux Enterprise 15+ | glibc libgcc_s1 libstdc++6 ca-certificates gzip tar |
curl 或 wget |
需要内核 >= 4.18,glibc,libstdc++6 |
按 Linux 发行版提供的提示
以下是发行版的列表以及可能缺少的任何基本要求。不包括发行版的生命周期结束版本。
- ✅ = 正常工作
- ⚠️ = 正常工作,但请参阅限制的注释
- 🔬 = 实验性
- 🛑 = 不支持,但有解决方法
- ❌ = 不支持
服务器发行版 | Docker 镜像 | 缺少的库 | 备注/其他步骤 |
---|---|---|---|
⚠️ Alpine Linux 3.16 (64 位) | alpine:3.16 |
libgcc libstdc++ |
仅在开发容器和 WSL 中支持。由于扩展本地代码中存在 glibc 依赖项,某些安装在容器中的扩展可能无法工作。 |
✅ CentOS 8 服务器 (64 位) | centos:8 |
<无> | <无> |
❌ CentOS 7 服务器 (64 位) | centos:7 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<无> |
✅ Debian 10 服务器 (64 位) | debian:10 |
<无> | <无> |
❌ Debian 9 服务器 (64 位) | debian:9 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<无> |
✅ openSUSE Leap 服务器 15 (64 位) | opensuse/leap:15 |
Docker 镜像缺少 tar 和 gzip 。 |
<无> |
✅ Oracle Linux 8 (64 位) | oraclelinux:8 |
<无> | <无> |
❌ Oracle Linux 7 (64 位) | oraclelinux:7 |
glibc >= 2.28, libstdc++ >= 3.4.25。Docker 镜像缺少 tar 。 |
<无> |
⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32 位) | <不适用> | <无> | 由于扩展 x86 本地代码,某些扩展在 ARMv7l 主机上安装时可能无法工作。开发容器支持连接到 ARM 主机上的容器。 |
✅ RedHat Enterprise Linux 8 (64 位) | <无> | <无> | |
❌ RedHat Enterprise Linux 7 (64 位) | glibc >= 2.28, libstdc++ >= 3.4.25 |
<无> | |
✅ SUSE Linux Enterprise Server 15 (64 位) | Docker 镜像缺少 tar 和 gzip 。 |
<无> | |
✅ Ubuntu Server 20.04 (64 位) | ubuntu:20.04 |
<无> | <无> |
❌ Ubuntu Server 18.04 (64 位) | ubuntu:18.04 |
glibc >= 2.28 |
<无> |
问题或反馈
- 请参阅 提示和技巧 或 常见问题解答。
- 在 Stack Overflow 上搜索。
- 添加功能请求或报告问题。
- 创建 开发容器模板 或 功能 以供其他人使用。
- 为 我们的文档 或 VS Code 本身做出贡献。
- 有关详细信息,请参阅我们的贡献指南。