김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2021년 6월 1일 화요일

윈도우에서 WSL2로 손쉽게 리눅스와 고(golang)사용하기

 SecureKim     오후 4:14     go, golang, linux, windows, wsl, wsl2     No comments   

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 를 만들어서  

package main
func main() {
    println("Test")
}

를 만들고 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 로 맨 아래나 적당한 곳에 환경 설정을 입력해 줍니다.

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

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 로 바꿔주면 디버깅이 잘 됩니다.

//"program": "${fileDirname}"
            "program": "${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 를 추가해 주기만 하면 됩니다.


  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

0 개의 댓글:

댓글 쓰기

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ▼  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ▼  6월 (1)
      • 윈도우에서 WSL2로 손쉽게 리눅스와 고(golang)사용하기
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates