Visual Studio Code

VS Code 및 VS Code Server 수동 설치

개요

 몇 달에 한번씩 VS Code의 홈페이지에서 파일을 다운로드하면 전송속도가 바닥을 치는 일이 발생한다. VS Code의 CDN 서버와 국내 인터넷 회선 간의 문제인 것으로 보이며, 이 문제 때문에 새 VS Code 및 확장을 업데이트하지 못하거나, VS Code Server를 원격 서버에 설치하는 과정이 아주 오래 걸리는 현상이 나타난다. 다른 ISP 회선에 연결된 컴퓨터에서 접속해보면 문제가 해결되는 경우도 있으나 그럴 여유가 없는 환경에서는 다른 방법을 활용해야 한다.

그림 1: VS Code를 다운로드할 시 속도가 매우 느리게 측정되거나, 도중에 다운로드가 실패되기도 한다.

 

그림 2: VS Code로 원격 연결을 시도할 때 VS Code Server를 다운로드 해야하며, 이때도 마찬가지로 속도가 저하된다.

 이 밖에도 WAN과 연결되어 있지 않은 사설망에서 VS Code 및 VS Code Server를 설치하려면 수동으로 설치 파일을 다운로드 받아야 한다.

 결론은 이러한 네트워크 결함에 대비해 VS Code의 설치 파일 및 VS Code Server 파일의 복사본을 가지고 있다면 해결되는 문제이다. 다만, VS Code Server의 경우에는 연결되는 VS Code와의 버전과 일치해야 그림 2처럼 VS Code Server를 다운로드하는 작업 없이 바로 연결된다.

VS Code Server의 수동 설치

 VS Code는 VSCode GitHub 레포지토리에서 정기적으로 새로운 버전을 출시하고 있으며, 출시된 버전은 tag를 붙여 관리하고 있다. 자신이 현재 사용하고 있는 VS Code의 버전과 접속하려는 서버에 설치된 VS Code Server의 버전이 같아야 하므로 먼저, 자신의 VS Code 버전을 확인한다.

그림 3

 버전 정보와 함께 커밋 해시(커밋 ID)도 같이 출력된다. 버전을 확인했다면, VS Code GitHub 레포지토리로 접속하여 Releases 페이지에서 Tags 탭을 클릭한다.

그림 4

 Tag는 버전을 구분하는 용도이며, 아래에는 배포 날짜와 짧은 커밋 해시(커밋 ID)가 명시되어 있다. 해당 커밋 ID를 클릭하면 소스코드 변경사항을 비교할 수 있는 페이지에서 전체 커밋 ID를 확인할 수 있는데, 해당 커밋 ID를 알고 있어야 Microsoft CDN 서버에서 해당 버전의 파일을 다운로드할 수 있다.

그림 5

 해당 커밋 ID를 아래 주소의 <YOUR-COMMIT-ID>에 대체하여 접속하면 해당 버전의 VS Code Server 바이너리 압축 파일이 다운로드된다.

https://update.code.visualstudio.com/commit:<YOUR-COMMIT-ID>/server-linux-x64/stable

 다만, update.code.visualstudio.com 도메인에서 바로 다운로드되는 것은 아니며 az764295.vo.msecnd.net 도메인으로 Redirection되어 최종적으로 다음 주소로 접속된다.

https://az764295.vo.msecnd.net/stable/<YOUR-COMMIT-ID>/vscode-server-linux-x64.tar.gz
 az764295.vo.msecnd.net 도메인은 보는 것처럼 CDN 서버의 주소이며, 지역 또는 시간에 따라 달라질 것으로 예상된다. 이 주소는 2023년 1월 경 대한민국 경상북도 포항시에서 측정한 주소이다.
 물론 이미 네트워크 문제가 발생되고 있는 시점에서는 이렇게 다운로드해도 속도는 마찬가지로 많이 낮아질 것이다. 하단의 VS Code 및 VS Code Server 미러 서버를 참고해서 파일을 다운받을 수 있다.
그림 6

 이제 VS Code Server의 바이너리 파일을 얻었으니 해당 파일을 접속하려는 서버의 사용자 홈 디렉터리로 전송한다.

scp -i ~/.ssh/id_rsa -P 22 vscode-server-linux-x64.tar.gz <USER-NAME>@<SERVER-ADDRESS>:~
 scp 명령의 포트번호 지정은 대문자 -P이다. 소문자 -p는 소유권 속성을 보존하기 위한 옵션으로 사용된다.

 이전에 VS Code Server를 서버에 설치한 이력이 있었다면 홈 디렉터리에 다음 폴더가 존재할 것이다.

.vscode-remote-containers/
.vscode-server/

 해당 폴더의 bin 폴더에는 과거에 접속한 VS Code 버전의 커밋 ID가 폴더로 존재하는데 이 bin 디렉터리에 그림 6의 VS Code Server 바이너리를 설치하면 된다. 그 전에 이전에 접속했던 VS Code Server를 삭제하는 것이 깔끔하지만, 굳이 삭제를 안해도 문제가 없다면 그대로 둬도 상관없다. 만약 삭제를 한다면 아래 명령을 수행하면 되며, 과거 VS Code Server에 설치되었던 확장이나 여러 설정들이 모두 제거된다.

 rm -rf ~/.vscode-*

 .vscode-* 폴더가 제거되면 VS Code Server가 완전히 새로 설치될 준비를 마쳤다. 아래 명령들을 통해 폴더를 다시 생성하고 그 곳에 방금 전송한 압축 파일을 해제한다. <YOUR-COMMIT-ID>는 지정한 커밋 ID로 대체한다.

mkdir -p ~/.vscode-server/bin/<YOUR-COMMIT-ID>
tar --strip 1 -xvf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/<YOUR-COMMIT-ID>
rm vscode-server-linux-x64.tar.gz
 --strip 1은 압축 파일 내부에서 상위 1번째 요소 즉, 최상위 폴더의 생성을 제외하고 나머지 하위 요소들을 대상 디렉터리에 압축 해제하는 옵션이다. 그림 6을 보면 압축 파일명과 같은 이름으로 최상위 폴더가 존재하는 것을 확인할 수 있다.

 이제 모든 작업이 끝났다. VS Code로 접속하면 VS Code Server 다운로드없이 바로 접속이 되는 것을 확인할 수 있다.

Attach VS Code

 컨테이너 내부로 VS Code를 Attach 하는 과정에서도 컨테이너 내부에 현재 VS Code의 버전과 일치하는 VS Code Server를 설치하는 과정이 수행된다.

그림 7

 이때는 Dev Container 로그에 그림 7처럼 다운로드가 딜레이되는 현상이 동일하게 나타나는데, 이때는 해당 컨테이너에 Shell로 Attach하여 미리 공유된 볼륨 맵핑 경로로 VS Code Server 바이너리 압축 파일을 컨테이너로 전송한 후 동일하게 ~/.vscode-server/bin/<YOUR-COMMIT-ID> 경로에 압축을 해제하면 된다.

VS Code 및 VS Code Server 미러 서버

 언제 Microsoft CDN과의 연결이 불안정해질지 모르는데 VS Code 설치 프로그램 및 VS Code Server 바이너리 파일을 항상 최신화하여 가지고 있을 수는 없어 자체적으로 미러 서버(mirror.loopback.kr/vscode/)를 운영하고 있으니 필요시 참고하길 바란다.

그림 8

 

댓글

댓글 본문
버전 관리
Hyunseok Lim
현재 버전
선택 버전
graphittie 자세히 보기