Remote-Entwicklung mit Linux
Linux ist eine sehr variable Umgebung, und die große Anzahl von Server-, Container- und Desktop-Distributionen kann es schwierig machen, herauszufinden, was unterstützt wird. Die Remote-Entwicklung von Visual Studio Code hat Voraussetzungen für die spezifische Host-, Container- oder WSL-Distribution, mit der Sie sich verbinden werden.
Die Erweiterungen funktionieren nachweislich, wenn sie mit einer aktuellen stabilen/LTS-Version von verbunden sind
- 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+) (früher Raspbian genannt)
- CentOS / RHEL 64-Bit x86 (8+)
- Alpine Linux 64-Bit x86 Container oder WSL-Hosts (3.16+) in Dev-Containern, WSL
Die folgenden Nicht-Linux-SSH-Hosts werden ebenfalls unterstützt
- Windows 10/11 / Server 2016/2019 SSH-Hosts (1803+) mit dem offiziellen OpenSSH Server.
- macOS 10.14+ (Mojave) SSH Hosts mit aktivierter Remote-Anmeldung.
Wenn Sie jedoch eine nicht standardmäßige Konfiguration oder eine Downstream-Distribution von Linux verwenden, kann es zu Problemen kommen. Dieses Dokument enthält Informationen zu den Anforderungen sowie Tipps, die Ihnen helfen, auch bei nur Community-unterstützten Konfigurationen einsatzbereit zu sein.
Beachten Sie, dass andere Erweiterungen Abhängigkeiten haben können, die über die hier aufgeführten hinausgehen. Einige Erweiterungen enthalten auch kompilierte native Codes, die möglicherweise nicht unter Alpine Linux, ARMv7 (AArch32) oder ARMv8 (AArch64) funktionieren. Diese Plattformen werden aus diesem Grund als "Vorschau" betrachtet. Wenn Sie auf ein Problem stoßen, das nur mit einer bestimmten Erweiterung auftritt, wenden Sie sich an die Autoren der Erweiterung, um Informationen über deren native Abhängigkeiten zu erhalten.
Lokale Linux-Voraussetzungen
Wenn Sie Linux lokal ausführen, bestimmen die VS Code-Voraussetzungen die meisten Anforderungen.
Zusätzlich haben spezifische Remote-Entwicklungs-Erweiterungen weitere Anforderungen
- Remote - SSH:
sshmuss im Pfad vorhanden sein. Das Shell-Binärprogramm befindet sich normalerweise im Paketopenssh-client. - Dev Containers: Docker CE/EE 18.06+ und Docker Compose 1.21+. Befolgen Sie die offiziellen Installationsanweisungen für Docker CE/EE für Ihre Distribution. Wenn Sie Docker Compose verwenden, befolgen Sie auch die Anweisungen zur Installation von Docker Compose. (Beachten Sie, dass das Ubuntu Snap-Paket nicht unterstützt wird und Pakete in Distributionen veraltet sein können.)
dockerunddocker-composemüssen sich ebenfalls im Pfad befinden. Docker muss jedoch nicht laufen, wenn Sie einen Remote-Host verwenden. Weitere Informationen zu Möglichkeiten zur Konfiguration von Docker finden Sie in der Dev Containers-Dokumentation.
Voraussetzungen für Remote-Host / Container / WSL-Linux
Die Plattform-Voraussetzungen werden hauptsächlich durch die Version der Node.js-Laufzeitumgebung (und damit der V8 JavaScript-Engine) bestimmt, die in der Serverkomponente enthalten ist, die automatisch auf jedem Remote-Endpunkt installiert wird. Dieser Server hat auch eine Reihe von zugehörigen nativen Node-Modulen, die für jedes Ziel kompiliert und getestet werden müssen. 64-Bit x86 glibc-basierte Linux-Distributionen bieten derzeit die beste Unterstützung unter Berücksichtigung dieser Anforderungen.
Sie können auf Probleme mit bestimmten Erweiterungen mit nativen Abhängigkeiten bei ARMv7l (AArch32) / ARMv8l (AArch64) glibc-basierten Hosts, Containern oder WSL und 64-Bit x86 musl-basiertem Alpine Linux stoßen. Für ARMv7l/ARMv8l enthalten Erweiterungen möglicherweise nur x86_64-Versionen nativer Module oder Laufzeiten in der Erweiterung. Für Alpine Linux funktionieren enthaltene native Codes oder Laufzeiten aufgrund grundlegender Unterschiede bei der Implementierung von libc in Alpine Linux (musl) und anderen Distributionen (glibc) möglicherweise nicht. In beiden Fällen müssen Erweiterungen diese Plattformen explizit unterstützen, indem sie Binärdateien für diese zusätzlichen Ziele kompilieren / einbinden. Bitte reichen Sie ein Problem beim entsprechenden Erweiterungsautor ein, um Unterstützung anzufordern, wenn Sie auf eine Erweiterung stoßen, die nicht wie erwartet funktioniert.
| Verteilung | Grundlegende Anforderungen | Anforderungen für Remote - SSH | Hinweise |
|---|---|---|---|
| Allgemein | Kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, tar | OpenSSH-Server, bash und curl oder wget |
Führen Sie ldd --version aus, um die glibc-Version zu überprüfen. Führen Sie strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX aus, um zu sehen, ob libstdc++ 3.4.25 verfügbar ist. |
| Allgemein für Arm32 | libatomic1 |
Keine zusätzlichen Anforderungen. | |
| Ubuntu 20.04+, Debian 10+, Raspberry Pi OS Buster/10+ und nachgelagerte Distributionen | libc6 libstdc++6 ca-certificates tar |
openssh-server bash und curl oder wget |
Erfordert Kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25. |
| RHEL / CentOS 8+ | glibc libgcc libstdc++ ca-certificates tar |
openssh-server bash und curl oder wget |
Erfordert Kernel >= 4.18, glibc >= 2.28, libstdc++ >= 3.4.25. |
| Alpine Linux 3.16+ | musl libgcc libstdc++. musl >= 1.2.3, glibc nicht erforderlich. |
Noch nicht unterstützt. | Unterstützt in Dev Containers und WSL. Erweiterungen, die im Container installiert sind, funktionieren möglicherweise aufgrund von glibc-Abhängigkeiten im nativen Code der Erweiterung nicht. |
| openSUSE Leap / SUSE Linux Enterprise 15+ | glibc libgcc_s1 libstdc++6 ca-certificates gzip tar |
curl oder wget |
Erfordert Kernel >= 4.18, glibc, libstdc++6 |
Tipps nach Linux-Distribution
Dies ist eine Liste von Distributionen und etwaigen fehlenden Grundanforderungen. End-of-Life-Versionen von Distributionen sind nicht enthalten.
- ✅ = Funktioniert
- ⚠️ = Funktioniert, aber siehe Hinweis für Einschränkungen
- 🔬 = Experimentell
- 🛑 = Nicht unterstützt, aber Workaround vorhanden
- ❌ = Nicht unterstützt
| Server-Distribution | Docker-Image | Fehlende Bibliotheken | Hinweise / zusätzliche Schritte |
|---|---|---|---|
| ⚠️ Alpine Linux 3.16 (64-Bit) | alpine:3.16 |
libgcc libstdc++ |
Nur in Dev Containers und WSL unterstützt. Einige im Container installierte Erweiterungen funktionieren möglicherweise aufgrund von glibc-Abhängigkeiten im nativen Code der Erweiterung nicht. |
| ✅ 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 fehlen tar und 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 fehlt tar. |
<none> |
| ⚠️ Raspberry Pi OS Buster/10 (ARMv7l 32-Bit) | <n/a> | <none> | Einige Erweiterungen funktionieren möglicherweise nicht, wenn sie auf einem ARMv7l-Host installiert sind, aufgrund von x86-nativem Code der Erweiterung. Dev Containers unterstützen die Verbindung zu Containern auf einem 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 fehlen tar und 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> |
Fragen oder Feedback
- Siehe Tipps und Tricks oder die FAQ.
- Auf Stack Overflow suchen.
- Eine Funktionsanforderung hinzufügen oder ein Problem melden.
- Erstellen Sie eine Dev Container-Vorlage oder ein Feature für andere zur Verwendung.
- Zu unserer Dokumentation oder VS Code selbst beitragen.
- Details finden Sie in unserem CONTRIBUTING-Leitfaden.