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
需要在路徑中。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 引擎) 的版本所驅動,該執行階段隨附於自動安裝在每個遠端端點上的伺服器元件中。此伺服器也有一組相關的原生 Node 模組,需要針對每個目標進行編譯和測試。鑑於這些需求,以 64 位元 x86 glibc 為基礎的 Linux 發行版本目前提供最佳支援。
您可能會在某些具有原生相依性的擴充功能中遇到問題,這些擴充功能適用於以 ARMv7l (AArch32) / ARMv8l (AArch64) glibc 為基礎的主機、容器或 WSL,以及以 64 位元 x86 musl 為基礎的 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 Server (64 位元) | centos:8 |
<無> | <無> |
❌ CentOS 7 Server (64 位元) | centos:7 |
glibc >= 2.28、libstdc++ >= 3.4.25 |
<無> |
✅ Debian 10 Server (64 位元) | debian:10 |
<無> | <無> |
❌ Debian 9 Server (64 位元) | debian:9 |
glibc >= 2.28、libstdc++ >= 3.4.25 |
<無> |
✅ openSUSE Leap Server 15 (64 位元) | opensuse/leap:15 |
Docker 映像遺失 tar 和 gzip 。 |
<無> |
✅ Oracle Linux 8 (64 位元) | oraclelinux:8 |
<無> | <無> |
❌ Oracle Linux 7 (64 位元) | oraclelinux:7 |
glibc >= 2.28、libstdc++ >= 3.4.25。Docker 映像遺失 tar 。 |
<無> |
⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32 位元) | <不適用> | <無> | 當安裝在 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 映像遺失 tar 和 gzip 。 |
<無> | |
✅ Ubuntu Server 20.04 (64 位元) | ubuntu:20.04 |
<無> | <無> |
❌ Ubuntu Server 18.04 (64 位元) | ubuntu:18.04 |
glibc >= 2.28 |
<無> |
問題或意見反應
- 請參閱提示與技巧或常見問題。
- 在 Stack Overflow 上搜尋。
- 新增功能要求或回報問題。
- 建立 開發容器範本或功能供其他人使用。
- 貢獻我們的文件或 VS Code 本身。
- 請參閱我們的 CONTRIBUTING 指南以瞭解詳細資訊。