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+)
- Dev Containers、WSLにおけるAlpine Linux 64-bit x86コンテナまたはWSLホスト (3.16+)
以下の非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がパスに含まれている必要があります。シェルバイナリは通常、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もパスに含まれている必要があります。ただし、リモートホストを使用している場合、Dockerは実行されている必要はありません。Dockerの構成方法については、Dev Containersのドキュメントで詳しく学ぶことができます。
リモートホスト / コンテナ / WSL Linuxの前提条件
プラットフォームの前提条件は、主に各リモートエンドポイントに自動的にインストールされるサーバーコンポーネントに含まれるNode.jsランタイムのバージョン(および拡張としてV8 JavaScriptエンジン)によって決まります。このサーバーには、各ターゲット向けにコンパイルおよびテストする必要がある関連ネイティブノードモジュール一式も含まれています。これらの要件を考慮すると、現在64-bit x86 glibcベースのLinuxディストリビューションが最高のサポートを提供します。
ARMv7l (AArch32) / ARMv8l (AArch64) glibcベースのホスト、コンテナ、またはWSL、および64-bit x86 muslベースのAlpine Linuxで、ネイティブ依存関係を持つ特定の拡張機能で問題が発生する可能性があります。ARMv7l/ARMv8lの場合、拡張機能にx86_64バージョンのネイティブモジュールまたはランタイムしか含まれていないことがあります。Alpine Linuxの場合、含まれるネイティブコードまたはランタイムは、Alpine Linux (musl) と他のディストリビューション (glibc) でlibcが実装される方法の根本的な違いにより動作しない場合があります。これらの両方のケースでは、拡張機能はこれらの追加ターゲット用のバイナリをコンパイル/含めることによって、これらのプラットフォームのサポートにオプトインする必要があります。期待通りに動作しない拡張機能に遭遇した場合は、適切な拡張機能の作者にサポートを要求する問題を提起してください。
| 分布 | 基本要件 | Remote - SSH要件 | 注記 |
|---|---|---|---|
| 全般 | kernel >= 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 |
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) | <該当なし> | <なし> | ARMv7lホストにインストールされた場合、拡張機能のx86ネイティブコードが原因で一部の拡張機能が動作しない可能性があります。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 ガイドを参照してください。