ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Golang] go install 과 go get 의 차이 알아보기
    Golang 2024. 6. 15. 17:58
    728x90
    반응형

    - 목차

     

    들어가며.

    Go 언어를 사용하다 보면 go install go get 이라는 명령어를 자주 접하게 됩니다.

    이 두 명령어는 비슷해 보이지만, 사실 목적과 동작 방식이 다릅니다.

    이번 글에서는 go install go get 의 차이를 명확히 이해하고, 상황에 맞게 올바르게 사용하는 방법을 알아보겠습니다.

     

     

    go install ?

    go install 은 Binary 실행파일을 내려받기 위한 명령어입니다.

    이는 Go 프로젝트에 의존성을 추가하는 작업이 아닙니다.

    go install 로부터 설치된 파일은 $GOPATH/bin 디렉터리에 저장됩니다.

    주로 CLI 도구나 독립 실행형 프로그램을 설치할 때 사용됩니다.

     

    golang 1.22.10 환경에서 go install 의 예시를 살펴보겠습니다.

    Docker를 활용하여 격리된 Golang 1.22.10 환경을 구축합니다.

     

    docker run -it --name go --platform linux/amd64 golang:1.22.10 bash

     

    그리고 아래의 명령어들을 실행시켜줍니다.

     

    # 프로젝트 생성
    mkdir -p $GOPATH/src/project
    
    # 프로젝트 폴더 진입 후 go mod init
    cd $GOPATH/src/project
    go mod init project

     

     

    기본적으로 GOPATH 내부에는 bin 폴더와 pkg 폴더가 존재하는데요.

    go install 명령어의 결과로 설치되는 실행 파일은 bin 폴더 내부에 설치되게 됩니다.

     

    아래의 명령어는 Protocol Buffer 에서 사용되는 실행파일인 protoc-gen-go 를 설치하는 명령어입니다.

    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

     

     

     

    go install 명령어 실행 후에 $GOPATH/bin 디렉토리 내부에 protoc-gen-go 실행 파일이 생성된 결과를 확인할 수 있습니다.

     

     

    go get ?

    go get 은 Go 프로젝트에서 사용하는 외부 라이브러리를 다운로드하고, 이를 $GOPATH/pkg 디렉터리에 저장하는 명령어입니다.

    주로 서드파티 패키지나 라이브러리를 프로젝트에 추가할 때 사용됩니다.

     

    아래의 명령어는 Golang 의 grpc 의존성을 추가하는 명령어입니다.

     

    go get -u google.golang.org/grpc

     

    그리고 아래와 같이 $GOPATH/pkg 하위에 google.golang.org 프로젝트의 grpc 와 protobuf 관련 의존성들이 추가됩니다.

     

     

     

    마치며.

    Go 언어는 GOPATH 디렉토리 내부에 bin, pkg, src 세가지 디렉토리를 관리합니다.

    src 디렉토리는 프로젝트들이 저장되는 곳.

    pkg 디렉토리는 의존성 패키지들을 관리하는 곳.

    그리고 bin 디렉토리를 Binary 실행 파일들이 저장되는 곳.

    으로 생각하시면 이해가 쉬울 것 같네요.

     

     

    반응형
Designed by Tistory.