现已推出!阅读 10 月份的新功能和修复。

使用 Linux 进行远程开发

Linux 是一个高度可变的环境,大量服务器、容器和桌面发行版使得很难知道哪些是受支持的。Visual Studio Code 远程开发对您将连接到的特定主机/容器/WSL 发行版有先决条件。

这些扩展在连接到以下发行版的最新稳定/LTS 版本时已知有效:

  • Ubuntu 64 位 x86,ARMv8l (AArch64) (20.04+)
  • Debian 64 位 x86,ARMv8l (AArch64) (Buster/10+)
  • 树莓派操作系统 ARMv7l (AArch32) 32 位 (Buster/10+) (以前称为 Raspbian)
  • CentOS / RHEL 64 位 x86 (8+)
  • Alpine Linux 64 位 x86 容器或 WSL 主机 (3.16+) 在开发容器、WSL 中

以下非 Linux 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 包不受支持,发行版中的包可能已过时。)dockerdocker-compose 也必须位于路径中。但是,如果您 使用远程主机,则 Docker 不需要运行。您可以在 开发容器文档 中了解有关在开发容器中配置 Docker 的更多方法。

远程主机/容器/WSL Linux 先决条件

平台先决条件主要由 Node.js 运行时(以及由此扩展的 V8 JavaScript 引擎)的版本决定,该版本在每个远程端点上自动安装的服务器组件中提供。此服务器还具有一组相关的本机节点模块,需要为每个目标进行编译和测试。由于这些要求,64 位 x86 glibc 基于 Linux 发行版目前提供了最佳支持。

在使用ARMv7l (AArch32) / ARMv8l (AArch64) glibc 基于的主机、容器或 WSL 以及64 位 x86 musl 基于的 Alpine Linux时,您可能会遇到某些具有本机依赖项的扩展的问题。对于 ARMv7l/ARMv8l,扩展可能只包含扩展中的 x86_64 版本的本机模块或运行时。对于 Alpine Linux,包含的本机代码或运行时可能无法正常工作,因为 libc 在 Alpine Linux (musl) 和其他发行版 (glibc) 中的实现方式存在根本差异。在这两种情况下,扩展都需要选择支持这些平台,方法是为这些附加目标编译/包含二进制文件。如果您遇到无法正常工作的扩展,请向相应的扩展作者提出问题,要求支持。

发行版 基本要求 远程 - SSH 要求 说明
通用 内核 >= 4.18,glibc >= 2.28,libstdc++ >= 3.4.25,tar OpenSSH 服务器、bashcurlwget 运行 ldd --version 以检查 glibc 版本。运行 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 以查看是否可用 libstdc++ 3.4.25。
适用于 Arm32 的通用 libatomic1 没有其他要求。
Ubuntu 20.04+、Debian 10+、树莓派操作系统 Buster/10+ 及其下游发行版 libc6 libstdc++6 ca-certificates tar openssh-server bashcurlwget 需要内核 >= 4.18、glibc >= 2.28、libstdc++ >= 3.4.25。
RHEL / CentOS 8+ glibc libgcc libstdc++ ca-certificates tar openssh-server bashcurlwget 需要内核 >= 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 curlwget 需要内核 >= 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 镜像缺少 targzip <无>
✅ Oracle Linux 8 (64 位) oraclelinux:8 <无> <无>
❌ Oracle Linux 7 (64 位) oraclelinux:7 glibc >= 2.28,libstdc++ >= 3.4.25。Docker 镜像缺少 tar <无>
⚠️ 树莓派操作系统 Buster/10 (ARMv7l 32 位) <n/a> <无> 安装在 ARMv7l 主机上的某些扩展可能无法正常工作,因为扩展的 x86 本机代码。开发容器确实支持连接到 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 镜像缺少 targzip <无>
✅ Ubuntu 服务器 20.04 (64 位) ubuntu:20.04 <无> <无>
❌ Ubuntu 服务器 18.04 (64 位) ubuntu:18.04 <无> <无>

问题或反馈