목차
개요
Golang
으로 여러 프로젝트를 진행하다보면, 다양한 버전의 Golang
을 하나의 머신(PC)에서 사용해야할 때가 있습니다.
이번 블로그 포스트에서는 하나의 머신(PC)에서 여러 버전의 Golang
을 사용하기 위해 goenv
를 설치하고 사용하는 방법에 대해서 알아보도록 하겠습니다.
goenv
goenv
는 Python
의 pyenv
, Ruby
의 rbenv
와 같이 하나의 머신에서 여러 버전의 Golang
을 사용할 수 있게 하는, Go Version Management
입니다.
이번 블로그 포스트는, macOS
에서 goenv
를 설치하고 사용하는 방법에 대해서 알아보도록 하겠습니다. macOS
에서 Golang
을 설치하고 실행하는 방법에 대해서는 아래에 링크를 참고하시기 바랍니다.
goenv 설치
다음 명령어를 실행하여 macOS
에서 goenv
를 설치합니다.
brew install goenv
설치가 완료되었다면, 다음 명령어를 실행합니다.
goenv --version
문제없이 설치가 되었다면, 다음과 같이 goenv
의 버전을 확인할 수 있습니다.
goenv 2.0.6
goenv 설정
설치가 완료되었다면, 문제없이 goenv
를 사용하기 위해 .zshrc
파일을 열고 다음과 같이 수정합니다.
...
# go
export GOROOT="$(brew --prefix golang)/libexec"
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"
alias go=~/.goenv/shims/go
goenv version
다음 명령어를 실행하면, goenv
로 현재 설정된 Golang
버전을 확인 할 수 있습니다.
goenv version
그럼 다음과 같이 goenv
로 현재 설정된 Golang
버전을 확인할 수 있습니다.
system (set by /Users/dev-yakuza/.goenv/version)
goenv versions
다음 명령어를 실행하면, goenv
를 사용하여 현재 머신에 설치한 Golang
버전을 확인할 수 있으며, 그 중에서 현재 선택된 버전이 무엇인지 확인할 수 있습니다.
goenv versions
그럼 다음과 같이 goenv
로 설치한 Golang
의 버전과 현재 설정된 Golang
버전을 확인할 수 있습니다.
* system (set by /Users/dev-yakuza/.goenv/version)
현재는 goenv
를 사용하여 다른 버전의 Golang
을 설치하지 않았으므로 기본 버전(system)만 표시되고, 기본 버전이 선택된 것을 확인할 수 있습니다.
goenv install –list
다음 명령어를 실행하면, 설치 가능한 Golang
버전을 확인할 수 있습니다.
goenv install --list
그럼 다음과 같이 Golang
버전을 확인할 수 있습니다.
...
1.19.5
1.19.6
1.20.0
1.20rc1
1.20rc2
1.20.1
goenv install
그럼 goenv
를 사용하여 원하는 Golang
버전을 설치해 봅시다. 이번 블로그 포스트에서는 1.20.1
버전을 설치해보겠습니다. 새로운 Golang
버전을 설치하기 위해 다음 명령어를 실행합니다.
goenv install 1.20.1
그럼 다음과 같이 새로운 Golang
버전이 설치되는 것을 확인할 수 있습니다.
Downloading go1.20.1.darwin-amd64.tar.gz...
-> go1.20.1.darwin-amd64.tar.gz
######################################################################################################################## 100.0%
Installing Go Darwin 64bit 1.20.1...
Installed Go Darwin 64bit 1.20.1 to /Users/dev-yakuza/.goenv/versions/1.20.1
설치가 완료되었다면, 다음 명령어를 실행해 잘 설치가 되었는지 확인해 봅니다.
goenv versions
그럼 다음과 같이 1.20.1
버전의 Golang
이 설치된 것을 확인할 수 있습니다.
* system (set by /Users/dev-yakuza/.goenv/version)
1.20.1
goenv rehash
rehash
는 goenv
에 새롭게 설치한 Golang
버전을 인식시킬 때 사용하는 명령어 입니다. 따라서, 새로운 버전의 Golang
을 설치하였다면, 다음과 같이 rehash
명령어를 실행할 필요가 있습니다.
goenv rehash
goenv global
새롭게 설치한 1.20.1
버전의 Golang
을 전역(Global)에서 사용하는 방법에 대해서 알아보겠습니다. 다음 명령어를 실행하여 새로운 Golang
버전을 기본 버전으로 설정합니다.
goenv global 1.20.1
다음 명령어를 실행하여, 새로운 버전의 Golang
이 잘 설정이 되었는지 확인합니다.
go versions
그럼 다음과 같이 새로운 Golang
버전이 잘 설정된 것을 확인할 수 있습니다.
system
* 1.20.1 (set by /Users/dev-yakuza/.goenv/version)
또한, 다음 명령어를 실행하여 현재 사용중인 Golang
버전을 확인할 수 있습니다.
goenv version
그럼 다음과 같이 Golang
의 버전을 확인할 수 있습니다.
1.20.1 (set by /Users/dev-yakuza/.goenv/version)
물론, 기본적인 명령어로도 Golang
의 버전을 확인할 수 있습니다.
go version
그럼 다음과 같이 Golang
의 버전을 확인할 수 있습니다.
go version go1.20.1 darwin/amd64
goenv global
로 설정된 버전은 기본 버전으로 설정됩니다. 따라서 터미널을 종료하고 다시 시작해도 항상 1.20.1
버전의 Golang
이 사용되게 됩니다.
goenv shell
goenv shell
은 해당 명령어를 실행한 터미널에서만 특정 버전의 Golang
을 사용하도록 합니다.
goenv global
과 차이를 확인하기 위해, 우선 다음 명령어를 실행하여 다른 Golang
버전을 설치합니다.
goenv install 1.19.6
설치가 완료되면, 다음 명령어를 실행하여 터미널에서만 해당 버전을 사용할 수 있도록 합니다.
goenv shell 1.19.6
이제 다음 명령어를 실행하여 Golang
버전이 잘 변경되었는지 확인합니다.
goenv versions
그럼 다음과 같이 Golang
의 버전이 잘 변경된 것을 확인할 수 있습니다.
system
* 1.19.6 (set by GOENV_VERSION environment variable)
1.20.1
또한, 다음 명령어를 실행하여 현재 사용중인 Golang
버전을 확인할 수 있습니다.
goenv version
그럼 다음과 같이 Golang
의 버전을 확인할 수 있습니다.
1.19.6 (set by GOENV_VERSION environment variable)
물론, 기본적인 명령어로도 Golang
의 버전을 확인할 수 있습니다.
go version
그럼 다음과 같이 Golang
의 버전을 확인할 수 있습니다.
go version go1.19.6 darwin/amd64
goenv shell
은 해당 명령어를 실행한 터미널이 닫히면, 설정한 버전이 초기화되고, 기본 Golang
버전이 다시 설정됩니다. 즉, 터미널을 종료하고 다시 터미널을 열면, 앞에서 goenv global
로 설정한 버전이 활성화됩니다.
goenv local
goenv local
명령어를 실행하면, 해당 명령어를 실행한 프로젝트(폴더)에서는 항상 해당 버전을 사용하게 됩니다. goenv local
은 다음과 같이 사용할 수 있습니다.
goenv local 1.19.6
명령어를 실행하면 .go-version
파일이 생성되고, 1.19.6
버전이 기록된 것을 확인할 수 있습니다.
또한 다음 명령어를 실행하면 Golang
의 버전이 1.19.6
으로 잘 변경된 것을 확인할 수 있습니다.
goenv versions
goenv version
go version
.go-version
파일이 있는 폴더에서 터미널을 열면, goenv
가 자동으로 해당 파일의 버전을 인식하여 해당 버전의 Golang
을 선택합니다.
.go-version
goenv local
에서 확인했듯이, .go-version
파일을 사용하면 각각의 프로젝트에 맞는 Golang
의 버전을 관리할 수 있습니다. 다른 팀 멤버들과 Golang
으로 프로젝트를 진행한다면, .go-version
파일을 생성하고 버전을 기록해 두면 큰 도움이 됩니다.
.go-version
파일에 기록된 버전이 현재 머신에 설치가 되지 않은 경우가 있을 수 있습니다. 이를 확인하기 위해 .go-version
파일을 다음과 같이 수정해 봅니다.
1.18.10
그리고 터미널을 종료시킨 후, 다시 열면 다음과 같은 에러 메시지를 확인할 수 있습니다.
goenv: version '1.18.10' is not installed (set by /Users/dev-yakuza/projects/temp/test/.go-version)
.go-version
파일에 기록된 Golang
버전이 아직 설치가 되지 않았기 때문에 에러가 발생하였습니다.
이런 경우, 다음 명령어를 실행하여 .go-version
파일에 기록된 버전을 설치하도록 합니다.
goenv install
그럼 다음과 같이 .go-version
파일에 기록된 Golang
버전이 설치되는 것을 확인할 수 있습니다.
Downloading go1.18.10.darwin-amd64.tar.gz...
-> go1.18.10.darwin-amd64.tar.gz
####################################################################################################################### 100.0%####################################################################################################################### 100.0%
Installing Go Darwin 64bit 1.18.10...
Installed Go Darwin 64bit 1.18.10 to /Users/dev-yakuza/.goenv/versions/1.18.10
또한, 다음과 같은 명령어를 실행하면 Golang
버전이 잘 변경된 것을 확인할 수 있습니다.
goenv versions
goenv version
go version
이를 통해, 프로젝트를 공동으로 개발하는 멤버들과 동일한 Golang
버전을 사용할 수 있도록 만들 수 있습니다.
완료
이것으로 하나의 머신에서 여러 Golang
프로젝트를 진행할 때, 각각의 프로젝트에 맞는 Golang
버전을 관리하기 위해 goenv
를 설치하고 사용하는 방법에 대해서 알아보았습니다. Golang
의 버전이 다른 여러 프로젝트를 동시에 진행중에 계신다면, goenv
를 활용하여 Golang
의 버전을 관리해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.