使用 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 先决条件是大部分需求的来源。
此外,特定的远程开发扩展还有进一步的要求
- **Remote - SSH:**
ssh
需要在 PATH 中。Shell 二进制文件通常位于openssh-client
软件包中。 - **开发容器**:Docker CE/EE 18.06+ 和 Docker Compose 1.21+。按照适用于你的发行版的 Docker CE/EE 官方安装说明进行操作。如果你使用 Docker Compose,也要按照安装 Docker Compose 的说明进行操作。(请注意,不支持 Ubuntu Snap 软件包,并且发行版中的软件包可能已过时。)
docker
和docker-compose
也必须在 PATH 中。但是,如果你使用远程主机,Docker 不需要运行。你可以在开发容器文档中了解有关如何配置 Docker 的更多信息。
远程主机 / 容器 / WSL Linux 先决条件
平台先决条件主要取决于每个远程终结点上自动安装的服务器组件中随附的 Node.js 运行时版本(以及由此延伸的 V8 JavaScript 引擎)。此服务器还包含一组相关的本机节点模块,需要针对每个目标进行编译和测试。根据这些要求,**64 位 x86 glibc-based** 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
实现方式的根本差异,包含的本机代码或运行时可能无法工作。在这两种情况下,扩展需要通过编译/包含这些额外目标的二进制文件来选择支持这些平台。如果你遇到某个扩展无法按预期工作的问题,请向相应的扩展作者提出问题,请求支持。
发行版 | 基本要求 | Remote - 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+, Raspberry Pi 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 |
<none> | <none> |
❌ CentOS 7 服务器 (64 位) | centos:7 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<none> |
✅ Debian 10 服务器 (64 位) | debian:10 |
<none> | <none> |
❌ Debian 9 服务器 (64 位) | debian:9 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<none> |
✅ openSUSE Leap 服务器 15 (64 位) | opensuse/leap:15 |
Docker 镜像缺失 tar 和 gzip 。 |
<none> |
✅ Oracle Linux 8 (64 位) | oraclelinux:8 |
<none> | <none> |
❌ Oracle Linux 7 (64 位) | oraclelinux:7 |
glibc >= 2.28, libstdc++ >= 3.4.25。Docker 镜像缺失 tar 。 |
<none> |
⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32 位) | <n/a> | <none> | 由于扩展的 x86 本机代码,某些扩展安装在 ARMv7l 主机上时可能无法工作。开发容器**确实**支持连接到 ARM 主机上的容器。 |
✅ RedHat Enterprise Linux 8 (64 位) | <none> | <none> | |
❌ RedHat Enterprise Linux 7 (64 位) | glibc >= 2.28, libstdc++ >= 3.4.25 |
<none> | |
✅ SUSE Linux Enterprise 服务器 15 (64 位) | Docker 镜像缺失 tar 和 gzip 。 |
<none> | |
✅ Ubuntu 服务器 20.04 (64 位) | ubuntu:20.04 |
<none> | <none> |
❌ Ubuntu 服务器 18.04 (64 位) | ubuntu:18.04 |
glibc >= 2.28 |
<none> |
问题或反馈
- 参阅技巧和窍门或常见问题。
- 在Stack Overflow 上搜索。
- 提交功能请求或报告问题。
- 为他人创建可用的开发容器模板或功能。
- 贡献于我们的文档或VS Code 本身。
- 有关详细信息,请参阅我们的贡献指南。