윈도우 WSL(Windows Subsystem for Linux)로 개발 환경 만들기
하나의 컴퓨터에 OS 두 개를 놓고 쓰는 건 번거로운 일이다.
한국 정부 사이트를 문제없이 사용하려면 윈도우가 필요하고, 개발 편의성은 리눅스가 더 높다.
정부 사이트를 이용할 때마다 재부팅을 해서 윈도우를 사용하는건 귀찮은 일이다.
WSL(Windows Subsystem for Linux)이 발표되고 한참을 눈여겨보다가 새해를 맞아 사용해보기로 했다.
리눅스 파티션을 갈아엎고, 윈도우에서 WSL을 이용해 개발환경을 구축해봤다.
리눅스에서 Wine으로 돌리는 윈도우 애플리케이션보다 안정적인 느낌이다.
watcher가 제대로 동작하지 않는다는 것(https://github.com/Microsoft/WSL/issues/216)은 아쉽지만, OS 두 개를 관리하는 수고스러움에 비할 바는 아니다.
리눅스를 수년간 사용하면서 패키지를 업데이트할 때마다 컴퓨터가 이상해지지는 않을까 노심초사했고, 다음엔 맥으로 바꿔야 하나 고민했다.
그런데 이번에 WSL을 써보니, 윈도우도 좋은 대안이라는 생각이다.
대한민국 정부 사이트 접속도 원활하고, WSL 개발 환경도 만족스럽다.
십 년 넘게 멀리했던 윈도우와 좀 친해져 봐야겠다.
WSL 설치 및 설정
Turn Windows features on or off에서 Windows Subsystem for Linux 선택 설치
Microsoft Store에서 Linux로 검색해서 마음에 드는 리눅스 찾아 설치 (debian)
wsl 베터리 설정
Settings > Update & Security > Windows Defender > Open Windows Defender Secutiry Central > Protection Against Viruses & Threats > Advanced Config… > Exclusions > Add or Remove > Add > Folder에 리눅스 시스템 루트 추가
Group Policy Management Editor > Computer configuration > Windows components > Windows Defender Antivirus > Real-time protection >
Turn off real-time protection Enabled로 변경
debian 설정
WSL 루트 - C:\Users\dorajistyle\AppData\Local\Packages\TheDebianProject.DebianGNULinux_버전\LocalState\rootfs
유저이름과 비밀번호 설정
데비안 버전 알아보기 - cat /etc/issue
데비안 버전 알아보기 - cat /etc/os-release os version
필요 패키지 설치
sudo apt install build-essential patch git-core curl unzip pkg-config libvips-dev apt-transport-https ca-certificates psmisc ack ncdu python python-pip
yarn 설치
sudo apt purge cmdtest (yarn 설치 위해)
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo “deb https://dl.yarnpkg.com/debian/ stable main” | sudo nano /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
참고 - https://yarnpkg.com/lang/en/docs/install/#debian-stable
installation Problem: Unexpected token { in cli.js 문제 발생 시 - https://github.com/yarnpkg/yarn/issues/6914
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejs
postgres 설치 (https://www.postgresql.org/download/linux/debian/)
sudo nano /etc/apt/sources.list.d/pgdg.list 에 deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main 추가
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo passwd postgres
sudo service postgresql start
sudo -u postgres psql
ALTER USER postgres PASSWORD ‘my_postgres_password’;
Peer authentication failed for user “postgres” 오류시
/etc/postgresql/10/main/pg_hba.conf 파일에서 local all postgres peer 을 local all postgres md5로 바꿔 저장하고 sudo service postgresql restart로 재시작
nvm 설치
https://yoember.com/nodejs/the-best-way-to-install-node-js
zsh 설치
sudo apt-get install zsh
sudo chsh -s `which zsh`
zsh-nvm 설치
https://github.com/lukechilds/zsh-nvm
git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm
.zshrc에 plugins+=(zsh-nvm) 추가
compaudit | xargs chmod g-w,o-w zsh-nvm
watchman 설치
sudo apt-get install -y autoconf automake build-essential python-dev libtool m4 pkg-config libssl-dev libcrypto+±dev
git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0 # the latest stable release
./autogen.sh
./configure
make
sudo make install
$ echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_watches && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_queued_events && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_instances && watchman shutdown-server
참고 - https://facebook.github.io/watchman/docs/install.html
pip 패키지 설치
sudo pip install awscli awsebcli
윈도우 유틸리티 설치
- 오디오 출력 핫키 변환- https://github.com/sirWest/AudioSwitch/releases
- 7zip - https://www.7-zip.org/download.html
- vscode- https://code.visualstudio.com/Download
- f.lux - https://www.microsoft.com/store/productId/9N9KDPHV91JT
- focuswriter - https://gottcode.org/focuswriter/
- xnview - https://www.xnview.com/en/
- photoscape - http://www.photoscape.org/ps/main/index.php
- andy - https://www.andyroid.net/
hyper 터미널 설정
shell: ‘C:\Windows\System32\wsl.exe’, //shell을 wsl로
shellArgs: [], //비운다.
plugins: [
“hyper-dracula”,
“hyper-search” // CTRL + SHIFT + F로 찾는다.
],
vscode 설정
- Terminal > External: Windows Exec와 Terminal > integrated > Shell:Windows에 C:\WINDOWS\System32\wsl.exe 를 넣는다.
- Terminal > integrated: Cwd에 wsl 홈 디렉토리 경로를 넣는다.
- Ctrl + `를 누르면 터미널이 wsl로 잘 뜬다.
vscode extension
- setting sync
- annotator
- auto rename tag
- babel es6/es7
- debugger for chrome
- dracula Official
- embrace
- EsLint
- File Utils
- Go
- MDTools
- Partial Diff
- Pomodoro Timer
- Preview
- Project Manager
- Trailing Spaces
- Vetur
- vscode-icons
기타 윈도우 설정
- 필요한 프로그램은 단축키 등록하고, 시작 메뉴나 데스크탑에 넣어둬야 단축키가 작동한다.
- snap 설정을 통해 창을 관리한다.
기타 WSL 참고자료
https://github.com/sirredbeard/Awesome-WSL/blob/master/README.md
by 月風