使用Linux进行远程开发

Linux 是一个高度可变的环境,大量的服务器、容器和桌面发行版可能让人难以了解哪些是受支持的。Visual Studio Code 远程开发对于你将连接到的特定主机/容器/WSL 发行版有先决条件。

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

  • Ubuntu 64位 x86, ARMv8l (AArch64) (20.04+)
  • Debian 64位 x86, ARMv8l (AArch64) (Buster/10+)
  • Raspberry Pi OS 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 先决条件决定了大部分需求。

此外,特定的远程开发扩展还有进一步的要求:

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

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

您可能会在使用ARMv7l (AArch32) / ARMv8l (AArch64) glibc-based主机、容器或WSL以及64位x86 musl-based Alpine Linux时遇到某些扩展的问题。对于ARMv7l/ARMv8l,扩展可能仅包含x86_64版本的本机模块或运行时。对于Alpine Linux,包含的本机代码或运行时可能由于Alpine Linux(musl)和其他发行版(glibc)中libc的实现方式之间的根本差异而无法工作。在这两种情况下,扩展需要通过编译/包含这些额外目标的二进制文件来选择支持这些平台。如果您遇到一个扩展无法按预期工作,请向适当的扩展作者提出支持请求。

Distribution Base Requirements Remote - SSH Requirements Notes
General kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, tar OpenSSH server, bash, and curl or wget Run ldd --version to check the glibc version. Run strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX to see if libstdc++ 3.4.25 is available.
General for Arm32 libatomic1 No additional requirements.
Ubuntu 20.04+, Debian 10+, Raspberry Pi OS Buster/10+ and downstream distributions libc6 libstdc++6 ca-certificates tar openssh-server bash and curl or wget Requires kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25.
RHEL / CentOS 8+ glibc libgcc libstdc++ ca-certificates tar openssh-server bash and curl or wget Requires kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25.
Alpine Linux 3.16+ musl libgcc libstdc++. musl >= 1.2.3, glibc not required. Not yet supported. Supported in Dev Containers and WSL. Extensions installed in the container may not work due to glibc dependencies in extension native code.
openSUSE Leap / SUSE Linux Enterprise 15+ glibc libgcc_s1 libstdc++6 ca-certificates gzip tar curl or wget Requires kernel >= 4.18, glibc, libstdc++6

按Linux发行版提示

以下是发行版列表以及可能缺少的任何基本要求。不包括已停止支持的发行版版本。

  • ✅ = 工作中
  • ⚠️ = 工作中,但请注意限制
  • 🔬 = 实验性
  • 🛑 = 不支持,但有解决方法
  • ❌ = 不支持
Server Distribution Docker Image Missing libraries Notes / additional steps
⚠️ Alpine Linux 3.16 (64-bit) alpine:3.16 libgcc libstdc++ Supported in Dev Containers and WSL only. Some extensions installed in the container may not work due to glibc dependencies in extension native code.
✅ CentOS 8 Server (64-bit) centos:8 <none> <none>
❌ CentOS 7 Server (64-bit) centos:7 glibc >= 2.28, libstdc++ >= 3.4.25 <none>
✅ Debian 10 Server (64-bit) debian:10 <none> <none>
❌ Debian 9 Server (64-bit) debian:9 glibc >= 2.28, libstdc++ >= 3.4.25 <none>
✅ openSUSE Leap Server 15 (64-bit) opensuse/leap:15 Docker image is missing tar and gzip. <none>
✅ Oracle Linux 8 (64-bit) oraclelinux:8 <none> <none>
❌ Oracle Linux 7 (64-bit) oraclelinux:7 glibc >= 2.28, libstdc++ >= 3.4.25. Docker image is missing tar. <none>
⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32-bit) <n/a> <none> Some extensions may not work when installed on an ARMv7l host due to extension x86 native code. Dev Containers does support connecting to containers on an ARM host.
✅ RedHat Enterprise Linux 8 (64-bit) <none> <none>
❌ RedHat Enterprise Linux 7 (64-bit) glibc >= 2.28, libstdc++ >= 3.4.25 <none>
✅ SUSE Linux Enterprise Server 15 (64-bit) Docker image is missing tar and gzip. <none>
✅ Ubuntu Server 20.04 (64-bit) ubuntu:20.04 <none> <none>
❌ Ubuntu Server 18.04 (64-bit) ubuntu:18.04 glibc >= 2.28 <none>

问题或反馈