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 이상) (Dev Containers, WSL)
다음 비-Linux SSH 호스트도 지원됩니다.
- Windows 10/11 / Server 2016/2019 SSH 호스트 (1803 이상) (공식 OpenSSH Server 사용).
- macOS 10.14 이상 (Mojave) SSH 호스트 (원격 로그인 활성화).
그러나 표준이 아닌 구성 또는 다운스트림 Linux 배포판을 사용하는 경우 문제가 발생할 수 있습니다. 이 문서는 요구 사항에 대한 정보를 제공하며, 커뮤니티에서만 지원되는 구성이라도 사용할 수 있도록 돕는 팁을 제공합니다.
다른 확장 기능에는 여기에 나열된 것 이상의 종속성이 있을 수 있습니다. 일부 확장 기능에는 컴파일된 네이티브 코드가 포함되어 있어 Alpine Linux, ARMv7 (AArch32) 또는 ARMv8 (AArch64)에서 작동하지 않을 수 있습니다. 이러한 플랫폼은 이러한 이유로 "미리 보기"로 간주됩니다. 특정 확장 기능에서만 발생하는 문제를 발견하면, 확장 기능 작성자에게 문의하여 네이티브 종속성에 대한 정보를 얻으십시오.
로컬 Linux 전제 조건
로컬에서 Linux를 실행하는 경우, VS Code 전제 조건이 대부분의 요구 사항을 충족합니다.
또한, 특정 원격 개발 확장 기능에는 추가 요구 사항이 있습니다.
- 원격 - 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가 실행될 필요는 없습니다. Dev Containers 문서에서 Docker 구성 방법에 대해 자세히 알아볼 수 있습니다.
원격 호스트 / 컨테이너 / 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 구현 방식의 근본적인 차이 때문에 포함된 네이티브 코드 또는 런타임이 작동하지 않을 수 있습니다. 두 경우 모두 확장 기능은 이러한 추가 대상에 대한 바이너리를 컴파일/포함하여 이러한 플랫폼을 지원하도록 선택해야 합니다. 예상대로 작동하지 않는 확장 기능을 발견하면, 해당 확장 기능 작성자에게 지원을 요청하는 이슈를 제기해 주십시오.
| 분포 | 기본 요구 사항 | 원격 - 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 배포판별 팁
다음은 누락될 수 있는 배포판 및 기본 요구 사항 목록입니다. 지원 종료 버전의 배포판은 포함되지 않습니다.
- ✅ = 작동
- ⚠️ = 작동하지만 제한 사항에 대한 참고 사항 참조
- 🔬 = 실험적
- 🛑 = 지원되지 않지만 해결 방법 있음
- ❌ = 지원되지 않음
| 서버 배포판 | Docker 이미지 | 누락된 라이브러리 | 참고 / 추가 단계 |
|---|---|---|---|
| ⚠️ Alpine Linux 3.16 (64비트) | alpine:3.16 |
libgcc libstdc++ |
Dev Containers 및 WSL에서만 지원됩니다. 컨테이너에 설치된 일부 확장 기능은 glibc 종속성으로 인해 작동하지 않을 수 있습니다. |
| ✅ CentOS 8 서버 (64비트) | centos:8 |
<없음> | <없음> |
| ❌ CentOS 7 서버 (64비트) | centos:7 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<없음> |
| ✅ Debian 10 서버 (64비트) | debian:10 |
<없음> | <없음> |
| ❌ Debian 9 서버 (64비트) | debian:9 |
glibc >= 2.28, libstdc++ >= 3.4.25 |
<없음> |
| ✅ openSUSE Leap 서버 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 네이티브 코드로 인해 작동하지 않을 수 있습니다. 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 템플릿 또는 기능을 만드십시오.
- 문서 또는 VS Code 자체에 기여하십시오.
- 자세한 내용은 CONTRIBUTING 가이드를 참조하십시오.