마이크로소프트의 VSCode(Visual Studio Code)는 무료로 사용할 수 있는 강력한 IDE(통합개발환경)을 제공한다.
Git과 같은 형상관리 SW와의 연동은 물론 다양한 개발언어의 편리한 코딩을 위한 다양한 플러그인을 제공한다. 이번 포스팅은 그 중에서 VSCode에 원격 SSH 설정을 통해 PC의 소스파일이 아닌 개발서버의 소스를 코딩하는 환경을 설정하는 방법에 대한 포스팅이다.
현재 내가 하고 있는 일은 매년 상반기엔 비교적(?) 한가한 여유시간이 많이 생긴다. 그 시간적 여유를 이용해 예전에 개발했던 기술지원 프로젝트 관리시스템을 개선하자고 마음먹고 개발환경을 구축하고 있는 중이다. OS는 조금 오래된 버전이긴 하지만 CentOS 6.9를 택했고 웹서버와 PHP는 업그레이드하여 각각 Apache2.4, PHP는 7.3을 사용하고 MySQL은 5.6을 사용하기로 했다. 그리고 개발툴은 VSCode를 설치했다.
VSCode에서 Remote SSH 기능을 이용해 CentOS 서버에 접속하여 개발하게 되면 다음과 같은 환경을 사용할 수 있다.
왼쪽은 접속한 CentOS6.9서버의 탐색기다. 원격 디렉토리라고 보면 된다. 오른쪽 상단은 서버의 PHP 소스파일을 열어 편집하는 화면이고 오른쪽 아래는 ssh 접속한 터미널 창이다. 터미널 창을 별도로 실행하지 않고 VSCode 자체적으로 제공하는 ssh 접속창이다.
그런데… VSCode의 Remote ssh 기능을 설치하고 Remote Connection을 시도하는데 SSH 메시지 창에서 비밀번호를 입력하면 리눅스의 glibc 등 일부 라이브러리의 버전이 낮다는 오류가 뜨면서 접속이 되지 않는 문제가 있었다.
그 원인을 확인해보니… 공식적으로 CentOS의 경우 6.x 버전을 지원하지 않는다고 되어 있다. 아니 CentOS와 RedHat은 7 이상의 버전을 요구하고 있다.
리눅스 커널은 3.10 즉 CentOS 7부터 지원하는 커널버전을 요구하며 glibc는 2.17, libstdc++ 은 3.4.18 이상을 요구한다. 에러가 발생하는 이유는 CentOS 6의 공식 리포지토리에서는 glibc에서는 아래에서 처럼 2.12 까지만 지원하는데 VSCode 2.17 이상을 요구하고 있는 것이다.
하지만 커널모듈을 개발할 일은 없고 바이너리 컴파일이 필요한 C언어를 사용할 것도 아니다. 당연히 리눅스의 커널버전은 centos 6.9의 2.6.32 커널도 문제없을 것 같고 glibc와 libstdc++ 라이브러리만 버전을 맞춰주면 가능할 것 같았다. 두 라이브러리가 2.6.32 커널에서 잘 동작한다면 말이다.
결과적으로 일단 시도해봤고 성공적으로 Remote Connection (ssh) 설정이 가능했다.
먼저 glibc 2.1.7 은 github의 어느 공개리포지토리에 공개된 방법을 이용했다.
# wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm
# wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm
# wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm
# wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm
rpm -Uvh glibc-2.17-55.el6.x86_64.rpm \
glibc-common-2.17-55.el6.x86_64.rpm \
glibc-devel-2.17-55.el6.x86_64.rpm \
glibc-headers-2.17-55.el6.x86_64.rpm
또한 libstdc++ 4.8.2도 다음과 같이 설치한다.
wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-4.8.2-16.3.el6.x86_64.rpm \
&& wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm \
&& wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-static-4.8.2-16.3.el6.x86_64.rpm \
&& rpm -Uh \
libstdc++-4.8.2-16.3.el6.x86_64.rpm \
libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm \
libstdc++-static-4.8.2-16.3.el6.x86_64.rpm
만약 위의 URL에 접속되지 않는다면 이 구글드라이브에서 다운로드 받으면 된다. (구글드라이브에서 다운로드 받기)
CentOS 6.X에서 두 라이브러리만 업데이트하면 일단, VSCode에서 Remote ssh 접속을 통한 코드 편집이 가능하다.
#VSCode #RemoteConnection(ssh)