使用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主机也受支持:
- 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引擎)驱动。该服务器还有一组相关的本地节点模块,需要为每个目标进行编译和测试。根据这些要求,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> |
问题或反馈
- 参见 提示与技巧 或 常见问题解答。
- 在Stack Overflow上搜索。
- 添加一个功能请求或报告问题。
- 创建一个Dev Container 模板或功能供他人使用。
- 为我们的文档或VS Code本身做出贡献。
- 详情请参阅我们的CONTRIBUTING指南。