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+)
- Dev Containers、WSLでのAlpine Linux 64ビット x86コンテナまたはWSLホスト (3.16+)
以下の非Linux SSHホストもサポートされています。
- 公式OpenSSHサーバーを使用したWindows 10/11 / Server 2016/2019 SSHホスト (1803+)。
- リモートログインが有効になっている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ビット 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 要件 | 注 |
|---|---|---|---|
| 一般 | kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, tar | OpenSSHサーバー、bash、およびcurlまたはwget |
glibcのバージョンを確認するにはldd --versionを実行します。libstdc++ 3.4.25が利用可能かを確認するにはstrings /usr/lib64/libstdc++.so.6 | grep GLIBCXXを実行します。 |
| 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ディストリビューションごとのヒント
以下は、不足している可能性のあるディストリビューションと基本的な要件のリストです。サポート終了バージョンは含まれていません。
- ✅ = 動作中
- ⚠️ = 動作中、ただし制限事項については注記を参照
- 🔬 = 実験的
- 🛑 = 非サポートだが、回避策あり
- ❌ = 非サポート
| サーバーディストリビューション | Dockerイメージ | 不足しているライブラリ | 注記 / 追加手順 |
|---|---|---|---|
| ⚠️ Alpine Linux 3.16 (64ビット) | alpine:3.16 |
libgcc libstdc++ |
Dev Containersと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ビット) | <該当なし> | <なし> | 一部の拡張機能は、拡張機能のx86ネイティブコードが原因でARMv7lホストにインストールすると動作しない場合があります。Dev Containersは、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 |
<なし> |
質問またはフィードバック
- ヒントとテクニックまたはFAQを参照してください。
- Stack Overflowで検索します。
- 機能リクエストを追加するか、問題を報告します。
- 他の人が使用できるようにDev Container TemplateまたはFeatureを作成します。
- 弊社のドキュメントまたはVS Code自体に貢献します。
- 詳細については、CONTRIBUTINGガイドを参照してください。