WSL은 Windows Subsystem for Linux 의 약자로,
윈도우에서 리눅스를 쉽게 사용할 수 있도록 마이크로소프트에서 만든
리눅스 커널 호환 계층입니다.
1. WSL 설치
마이크로소프트 스토어 검색 : terminal
windows terminal 설치
설치 후 윈도우 -> windows terminal 오른쪽 클릭 -> 자세히 -> 관리자 권한으로 실행
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
재부팅
2. Linux 설치
재부팅 후 windows terminal 실행
wsl 명령 실행하면 https://aka.ms/wslstore 에서 다운받으라고 함.
접속해서 마음에 드는 운영체제 다운로드 후 시작 눌러서 터미널에서 설치
계정을 생성하고 사용합니다.
3. wsl2 업그레이드
WSL 2는 파일 시스템 성능을 높이고 전체 시스템 호출 호환성 을 추가합니다.
wsl -l -v 로 설치된 운영체제 버전 확인
wsl2 로 버전 변경하려고 하면
https://aka.ms/wsl2kernel을 설치하라고 하니 가서 설치해줍니다.
커널 설치 후 wsl --set-version Ubuntu 2 로 wsl 버전을 변경합니다.
wsl --set-default-version 2 명령으로 기본을 wsl2 로 설정합니다.
이제 창 왼쪽 상단에 v 표시를 눌러서 Ubuntu를 실행해줍니다.
따로 설정 없이 기본적으로 설치하셨다면 ctrl+shift+4 로 실행가능합니다.
4. vscode로 WSL 원격 개발하기
원격 개발을 위해서
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
둘 중 하나를 설치해주면 되는데, 저는 vscode를 열면 추천해주는 위쪽 remote-wsl을 설치했습니다.
vscode 설치하고 go 확장 설치하기 전에 WSL에 go 를 설치해볼게요
아래 방법은 현재(21/6/1) 기준으로 낮은 버전(1.14)이 설치되므로,
5번 Go 설치(업그레이드) 를 참고해서 설치를 진행하시는게 좋습니다.
go 설치
sudo apt update
sudo apt install golang-go
go version 을 입력해서 잘 설치되었는지 확인합니다.
이후 터미널에서 적당한 위치(~ 폴더 등)로 이동해서 code . 을 입력하면
윈도우에서 code 가 실행됩니다.
vscode 실행 후 첫 화면 Customize your Setup에서 Code in any language 를 선택하시면
원하는 언어를 선택해서 Extension을 설치 할 수 있습니다.
code 를 실행했던 폴더에서 work space 를 생성하면 폴더가 알아서 뜨게 됩니다.
test.go 를 만들어서
를 만들고 F5로 디버깅 하려고 하면 추가로 설치하라 것들이 뜹니다. 모두 설치해줍니다.
넘어가셨다면
Ctrl+Shift+P 를 누른 다음 Go:Install/Update Tools 를 찾아서 실행하면 나옵니다.
문제는... 설치된 go 버전이 너무 낮아서 vscode에서 진행을 안시켜줍니다.
Version of Go is too old for this version of Delve (minimum supported version 1.14, suppress this error with --check-go-version=false)
그래서 수동 업그레이드를 진행해봅니다.
5. Go 설치 (업그레이드)
https://golang.org/dl/ 에 가보면 linux 버전의 go 설치파일이 있습니다.
우클릭해서 링크 주소를 복사해 줍니다. 현재 기준으로는 아래 URL 입니다.
wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz 으로 다운로드
sudo tar -xvf go1.16.4.linux-amd64.tar.gz 로 압축 풀고
sudo mv go /usr/local 로 위치를 옮겨줍니다.
이대로 따라하셨다면 bash 쉘일텐데 echo $SHELL 명령으로 확인이 가능합니다.
(/bin/bash 가 뜨면 bash쉘이 맞습니다.)
sudo vi ~/.bashrc 로 맨 아래나 적당한 곳에 환경 설정을 입력해 줍니다.
source ~/.bashrc 로 적용시켜주고, echo $GOROOT 가 잘 뜨는지 확인하고,
go version 했을 때 1.16 버전이 잘 나오면 업그레이드는 끝입니다.
이제 code . 을 실행해서, 설치했던 extension들을 업데이트 해줍니다.
오른쪽 하단에 버전이 달라서 업데이트 해야한다고 자동으로 메시지가 나옵니다.
설치를 승인해주면 됩니다.
6. 에러 잡기
위에서 만들었던 test.go 를 F5로 디버깅 실행 하면 아래 메시지가 뜹니다.
failed to continue: check the debug console for details.
이것은 해당 파일을 프로그램으로 설정하지 않았기 때문으로,
아래처럼 프로그램 부분의 fileDirname을 file 로 바꿔주면 디버깅이 잘 됩니다.
여담으로, go 프로젝트는 아무곳에나 만드는게 아니라
$GOPATH에 만드는게 관리상 좋습니다.
우리는 5번에서 GOPATH를 ~/go 위치로 잡았기 때문에
해당 위치인 GOPATH로 이동해서 src 폴더를 만듭니다.
git을 이용하려면, src/gitub.com/userName/repoName와 같은 형태로 폴더를 만들면 됩니다.
굳이 GOPATH/src 에서 작업을 안하고 싶을 땐 export GO111MODULE=on 을 실행합니다.
참고로...
- GO111MODULE=on : Go Module 기능을 사용한다.
- GO111MODULE=off : Go Module을 사용하지 않는, 위에서 설명한 GOPATH 방법으로 동작한다.
- GO111MODULE=auto : 현재 위치가 $GOPATH/src 의 하위 디렉터리라면 GOPATH의 방법으로 동작한다. 만약 현재 위치가 $GOPATH/src 가 아닌 외부 디렉터리라면 Go Module 방법으로 동작한다.
go mod init 을 하면 의존성 모듈 관리를 위한 go.mod 파일이 생성되며,
의존성 모듈을 프로젝트 폴더에서 관리하고 싶을 때는 go mod vendor 명령을 사용하면 됩니다.
vendor 폴더가 있으면 의존성 모듈이 거기에 복사되기 때문에
GOPATH 관련파일을 모두 삭제해도 해당 프로젝트가 잘 동작합니다.
실행시 -mod vendor 를 추가해 주기만 하면 됩니다.
0 개의 댓글:
댓글 쓰기