Programming/OS, Program, Framework Tip

윈도우 10 개발 환경 셋팅하기 - 1

awesometic 2020. 10. 26. 01:55
반응형

윈도우로 개발해보기

노트북을 맥북에서 HP 엘리트북으로 바꿨습니다. HP 엘리트북 845 G7 이란 제품인데, 르누아르 4750U가 들어간 빠릿빠릿한 녀석입니다.

맥북에서 윈도우로 넘어오다 보니 개발 환경 셋팅이 전혀 달라 조금 고생했습니다. 아무래도 리눅스와 맥의 유닉스 환경과는 전혀 달라 어렵더라구요.

근데 조금 찾아보니까 최근 윈도우에서도 쉽고 나름대로 강력한 개발 환경을 셋팅할 수 있다는 걸 알아냈습니다. 많이 돌아 돌아 가야하지만, 다 하고 나면 나름 리눅스처럼 관리도 됩니다.

개인적으로 기록하고자 포스팅합니다.


노트북에 리눅스를 설치하면 더 쉽지만,

르누아르이기 때문에 커널 5.8 이상이 들어간 배포판을 이미 시도해봤습니다..

하지만 아직 자잘한 문제가 많아요. 비단 르누아르이기 때문에 발생하는 문제 뿐 아니라, 제가 생각하지 못했던 부분들에서도 문제가 생기더라구요. 그 문제들은 언젠가 새로운 포스트로 올려볼게요. 전 이런 문제들을 참을 수 없기에 다시 윈도우에서 개발을 해보려고 합니다. :)

Windows Subsystems for Linux 도 있지만,

WSL2는 제가 베타 버전부터 사용해서, 성능 테스트까지 블로그에 포스팅할 정도로 기대 중이었습니다. 하지만 아직 조금 아쉬운 부분들이 있었어요.

예를 들면, Python이나 Node, PHP를 사용해서 개발할 때 서버나 CLI 프로그램을 짜기에는 좋으나 Flutter, Electron 등 GUI 개발엔 사용하기가 무척 어렵습니다. WSL2의 화면을 윈도우 데스크탑으로 띄워주는 프로그램도 있어 불가능하진 않지만, 영 설정하기 어렵고, 설정을 했더라도 한 가지가 꼬이면 다시 바로잡기 어려워 보였습니다. 최근 Flutter와 Electron에 관심이 생겨 공부하고 있기에 더 사용할 이유가 없네요. ㅎㅎ

그리고 또 문제가, WSL2는 호스트 시스템과 파일 시스템, 네트워크 레이어가 아직도 나뉘어 있습니다. 네트워크는 Bridge 모드가 아니고, USB 메모리는 WSL2에서 접근할 수 없습니다.

최근 WSL2 에서 DirectX 레이어도 지원해주는 등 GUI가 나올 조짐이 있지만, 아직은 공식적인 방법으론 사용할 수 없기에 배제했습니다. WSL2는 Docker 이미지 개발이나 리눅스 커널 빌드에나 사용해야겠어요.


필수 프로그램 설치 및 설정

MSYS2

윈도우에서 다양한 GNU 프로젝트 프로그램들을 사용하기 위해선 MinGW라는 도구 모음이 필요합니다. MinGW 안에 GNU GCC고 뭐고 다 들어있습니다. 말하자면, GNU 프로그램을 WinAPI를 써서 사용할 수 있도록 전부 새로 빌드해준 거죠.

근데 MinGW 설치를 포함하여 Git, Python 및 여러 라이브러리를 리눅스 패키지 관리자를 통해 관리해주는 프로그램이 있습니다. 그게 MSYS2 입니다.

MSYS2 공식 홈페이지에서 MSYS2를 설치했습니다. 설치가 다된 후 실행하면 아래 창이 나타납니다.

MSYS2 에서 제공해주는 기본 터미널입니다. mintty 라는 귀여운 터미널인데, MSYS2가 기본적으로 MinGW를 포함하기 때문에 GNU Bash로 돌아갑니다.

MSYS2는 윈도우 안에서 하나의 서브 시스템으로 구성되어 작동합니다.

홈 디렉토리 안에 있지만, 루트 파일 시스템 자체는 C 드라이브의 msys64 라는 디렉토리로 마운트되어 있습니다. 그래서, 이 MSYS2 안에서 하는 행동들은 호스트 윈도우 시스템과 살짝 독립되어 있다고 볼 수 있습니다.

살짝 독립되어 있기 때문에 윈도우에서 사용하던 환경 변수가 전부 상속되진 않습니다. 나중에 불편할 수 있으니 설정을 통해 모든 환경 변수를 상속받도록 해줍니다.

환경 변수를 상속받기 위해 (inheritance) MSYS2 설정 파일을 수정해야 합니다.

"C:\msys64\msys2.ini" 과 같은 경로의 "mingw64.ini" 파일을 열고 아래 줄의 주석을 없애줍니다.

MSYS2_PATH_TYPE=inherit

이렇게, 일단 저희에게 가장 친숙한 (?) Bash를 윈도우에 가져왔습니다.

VS Code

전 VS Code로 리눅스 커널부터 모바일, 서버, 웹 개발까지 모든 프로그래밍을 다 하고 있습니다. 써놓고 보니 말이 좀 거창한데 사실 production 보단 공부에 가깝습니다. :)

먼저 VS Code를 설치하고, Settings 플러그인을 받은 후 Github Gist에 연동해 제 플러그인 설정을 모두 불러왔습니다.

기본 설정이 끝나고 나면, VS Code의 기본 터미널을 바꿔줘야 합니다. 내장 터미널 뷰어를 키면 기본값으로 PowerShell로 지정되어 있습니다. 근데 저희는 MSYS2를 설치했으니까 MSYS2로 바꿔줄게요.

메뉴의 "Files - Preference - Settings" 로 갑니다. 그리고 아래 스크린샷에 표시된 버튼을 눌러 JSON 형태로 엽니다.

맨 아랫줄에 아래 코드를 입력합니다.

    "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
    "terminal.integrated.shellArgs.windows": [
        "--login",
    ],
    "terminal.integrated.env.windows": {
        "CHERE_INVOKING": "1",
        "MSYS2_PATH_TYPE": "inherit",
        "MSYSTEM": "MINGW64",
    },

이제 VS Code를 다시 시작한 후 터미널을 열어보면 아래처럼 MSYS2 Bash로 잘 실행됩니다.

Terminal

마이크로소프트에서 Ubuntu Canonical과 협업하는 것부터 해서 요 몇년 사이에 정신을 차리고 있습니다. 그 과정에 나온 프로그램 중 하나가 Terminal입니다. 기존에 CMD와 PowerShell 전용 파란색의 이상한 터미널 프로그램을 버리고 아주 모던한 Terminal이란 프로그램을 출시했더라구요.

마이크로소프트 스토어 앱에서 Terminal을 찾아 설치했습니다.

기본값이 PowerShell입니다. PowerShell을 버리고 MSYS2를 기본값으로 변경해줍니다.

먼저 "Control + J" 단축키를 눌러 JSON 포맷의 설정 파일을 엽니다. 그리고 "profiles - list" 배열의 마지막에 아래 코드를 추가해줍니다.

    {
      "guid": "{71160544-14d8-4194-af25-d05feeac7233}",
      "name": "MSYS / MSYS2",
      "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys -use-full-path",
      "startingDirectory": "C:/msys64/home/%USERNAME%",
      "icon": "C:/msys64/msys2.ico",
      "fontFace": "Lucida Console"
    }

그리고 위에 "defaultProfile" 키를 추가한 아이템의 "guid"로 변경해줍니다. 그럼 아래 스크린샷처럼 될 거예요.

Terminal 프로그램을 종료했다가 다시 실행해보면, MSYS2가 기본값인 것을 확인하실 수 있습니다.

Chocolatey

Chocolatey는 윈도우에서 사용 가능한 패키지 매니저입니다. 말하자면 Chocolatey를 통해서 Python이나 Node를 최신버전으로 쉽게 유지할 수 있어요.

PowerShell을 관리자 권한으로 열고 아래 명령어를 차례로 입력하여 설치합니다.

Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

설치가 완료되면 아래처럼 "choco -v" 명령어를 통해 설치된 Chocolatey 버전을 확인할 수 있습니다.

이 choco 명령어는 Terminal (MSYS2) 에서도 사용할 수 있습니다.


 

참고

chocolatey.org/install

 

Installing Chocolatey

Chocolatey is software management automation for Windows that wraps installers, executables, zips, and scripts into compiled packages. Chocolatey integrates w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by businesses to manage software deployments.

chocolatey.org

www.msys2.org/

 

MSYS2

MSYS2 Software Distribution and Building Platform for Windows MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software. It consists of a command line terminal ca

www.msys2.org

stackoverflow.com/questions/45836650/how-do-i-integrate-msys2-shell-into-visual-studio-code-on-window

 

How do I integrate MSYS2 shell into Visual studio code on Window?

I tried to integrate MSYS2 shell into Visual studio Code integrated terminal. Here's my user settings: { "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe", "terminal.

stackoverflow.com

stackoverflow.com/questions/45404631/msys2-not-finding-windows-programs-despite-msys2-path-type-inherit

 

msys2: not finding windows programs despite (MSYS2_PATH_TYPE = inherit)

Using MSYS2 64-bit version 20161025 on Windows 10... I'm unable to get msys2 to recognize programs in the windows path. For example, after installing Go version 1.8.3 using the windows the instal...

stackoverflow.com

 

반응형