使用 Linux 進行遠端開發
Linux 是一個高度多變的環境,伺服器、容器和桌面發行版數量眾多,因此很難判斷哪些是受支援的。Visual Studio Code 遠端開發功能針對您將要連線的特定主機 / 容器 / WSL 發行版設有先決條件。
已知這些擴充功能適用於連線至以下近期穩定版 / LTS 版本的作業系統:
- Ubuntu 64-bit x86, ARMv8l (AArch64) (20.04+)
- Debian 64-bit x86, ARMv8l (AArch64) (Buster/10+)
- Raspberry Pi OS ARMv7l (AArch32) 32-bit (Buster/10+) (前身稱為 Raspbian)
- CentOS / RHEL 64-bit x86 (8+)
- Alpine Linux 64-bit x86 容器或 WSL 主機 (3.16+) (用於 Dev Containers, WSL)
同時也支援下列非 Linux 的 SSH 主機
- Windows 10/11 / Server 2016/2019 SSH 主機 (1803+):使用 官方 OpenSSH Server。
- macOS 10.14+ (Mojave) SSH 主機:需啟用遠端登入 (Remote Login)。
然而,如果您使用的是非標準配置或 Linux 的衍生發行版,可能會遇到問題。本文件提供需求相關資訊以及提示,協助您即使在僅由社群支援的配置下也能順利執行。
請注意,其他擴充功能可能有超出此處列出的相依性需求。某些擴充功能包含編譯過的原生程式碼,可能無法在 Alpine Linux、ARMv7 (AArch32) 或 ARMv8 (AArch64) 上運作。基於此原因,這些平台被視為「預覽」階段。如果您遇到僅在特定擴充功能上發生的問題,請聯繫擴充功能作者以獲取有關其原生相依性的資訊。
本機 Linux 先決條件
如果您是在本機執行 Linux,大部分的需求取決於 VS Code 的先決條件。
此外,特定的遠端開發擴充功能還有其他要求:
- Remote - SSH:
ssh必須存在於路徑 (path) 中。Shell 二進位檔案通常位於openssh-client套件內。 - Dev Containers: Docker CE/EE 18.06+ 和 Docker Compose 1.21+。請遵循 您發行版的 Docker CE/EE 官方安裝說明。如果您使用 Docker Compose,也請遵循 安裝 Docker Compose 的指南。(請注意,不支援 Ubuntu Snap 套件,且發行版中的套件版本可能已過期。)
docker和docker-compose也必須存在於路徑 (path) 中。但如果您是使用遠端主機,則無需執行 Docker。您可以在 Dev Containers 文件中進一步了解配置 Docker 的方法。
遠端主機 / 容器 / WSL Linux 先決條件
平台先決條件主要取決於每個遠端端點上自動安裝的伺服器元件中所附帶的 Node.js 執行階段版本(以及延伸的 V8 JavaScript 引擎)。此伺服器還有一組相關的原生節點模組,需要針對每個目標進行編譯與測試。基於這些需求,64-bit x86 glibc-based 的 Linux 發行版目前提供最佳支援。
在 ARMv7l (AArch32) / ARMv8l (AArch64) glibc-based 的主機、容器或 WSL,以及 64-bit x86 musl-based 的 Alpine Linux 上,您可能會遇到某些帶有原生相依性的擴充功能問題。對於 ARMv7l/ARMv8l,擴充功能可能僅包含 x86_64 版本的原生模組或執行階段。對於 Alpine Linux,由於 Alpine Linux 的 libc 實作方式 (musl) 與其他發行版 (glibc) 之間存在根本差異,因此包含的原生程式碼或執行階段可能無法運作。在上述兩種情況下,擴充功能需要透過為這些額外目標編譯/包含二進位檔案來選擇支援這些平台。如果您遇到擴充功能無法如預期運作,請向對應的擴充功能作者提出問題,要求提供支援。
| 分佈 | 基礎需求 | Remote - SSH 需求 | 備註 |
|---|---|---|---|
| 一般資訊 | kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25, tar | OpenSSH server, 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 |
需要 kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25。 |
| RHEL / CentOS 8+ | glibc libgcc libstdc++ ca-certificates tar |
openssh-server bash 以及 curl 或 wget |
需要 kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25。 |
| Alpine Linux 3.16+ | musl libgcc libstdc++。musl >= 1.2.3,不需 glibc。 |
尚未支援。 | 支援 Dev Containers 和 WSL。安裝在容器中的擴充功能可能會因擴充功能原生程式碼中的 glibc 相依性而無法運作。 |
| openSUSE Leap / SUSE Linux Enterprise 15+ | glibc libgcc_s1 libstdc++6 ca-certificates gzip tar |
curl 或 wget |
需要 kernel >= 4.18, glibc, libstdc++6 |
各 Linux 發行版的提示
以下是發行版列表以及可能缺少的任何基礎需求。不包含已停止維護 (End-of-life) 的版本。
- ✅ = 可運作
- ⚠️ = 可運作,但請參閱注意事項以了解限制
- 🔬 = 實驗性
- 🛑 = 不支援,但有替代方案
- ❌ = 不支援
| 伺服器發行版 | Docker 映像檔 | 缺少函式庫 | 注意事項 / 額外步驟 |
|---|---|---|---|
| ⚠️ Alpine Linux 3.16 (64-bit) | alpine:3.16 |
libgcc libstdc++ |
僅支援 Dev Containers 和 WSL。部分安裝在容器中的擴充功能可能會因擴充功能原生程式碼中的 glibc 相依性而無法運作。 |
| ✅ CentOS 8 Server (64-bit) | centos:8 |
<無> | <無> |
| ❌ CentOS 7 Server (64-bit) | centos:7 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<無> |
| ✅ Debian 10 Server (64-bit) | debian:10 |
<無> | <無> |
| ❌ Debian 9 Server (64-bit) | debian:9 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<無> |
| ✅ openSUSE Leap Server 15 (64-bit) | opensuse/leap:15 |
Docker 映像檔缺少 tar 和 gzip。 |
<無> |
| ✅ Oracle Linux 8 (64-bit) | oraclelinux:8 |
<無> | <無> |
| ❌ Oracle Linux 7 (64-bit) | oraclelinux:7 |
glibc >= 2.28, libstdc++ >= 3.4.25。Docker 映像檔缺少 tar。 |
<無> |
| ⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32-bit) | <n/a> | <無> | 由於擴充功能含有 x86 原生程式碼,安裝在 ARMv7l 主機上時,部分擴充功能可能無法運作。Dev Containers 確實支援連線至 ARM 主機上的容器。 |
| ✅ RedHat Enterprise Linux 8 (64-bit) | <無> | <無> | |
| ❌ RedHat Enterprise Linux 7 (64-bit) | glibc >= 2.28, libstdc++ >= 3.4.25 |
<無> | |
| ✅ SUSE Linux Enterprise Server 15 (64-bit) | Docker 映像檔缺少 tar 和 gzip。 |
<無> | |
| ✅ Ubuntu Server 20.04 (64-bit) | ubuntu:20.04 |
<無> | <無> |
| ❌ Ubuntu Server 18.04 (64-bit) | ubuntu:18.04 |
glibc >= 2.28 |
<無> |
問題或意見回饋
- 請參閱提示與技巧或常見問題集 (FAQ)。
- 在 Stack Overflow 上搜尋。
- 提出功能需求或回報問題。
- 建立一個 開發容器範本 或 功能 供他人使用。
- 為我們的文件或 VS Code 本身做出貢獻。
- 詳細資訊請參閱我們的 CONTRIBUTING 指南。