yoongrammer

[Go] go get 알아보기 본문

언어/Go 언어

[Go] go get 알아보기

yoongrammer 2021. 1. 11. 18:22
728x90

목차

    [Go] go get 알아보기


    go get 명령어는 패키지 및 관련 종속성(dependency)을 다운로드 및 설치하는 명령어입니다.

    패키지는 $GOPATH/src/<import-path> 경로에 저장됩니다.

     

    Usage:

    go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

    -d : 설치는 하지 않고 소스 파일만 다운로드합니다.

    -u : 패키지 및 해당 종속성을 업데이트합니다.

    -t : 패키지에 대한 테스트를 빌드하는 데 필요한 패키지도 다운로드합니다.

    -v : 진행 및 디버그 출력

     

    자세한 옵션 설명은 go help get을 통해 확인할 수 있습니다.

    go get 사용하기


    예를 통해 알아보도록 하겠습니다.

    사전 작업


    github에 있는 playstack 저장소를 사용하겠습니다.

    playstack 디렉터리에는 LICENSE 파일과 paly 디렉터리가 있습니다.

    playstack
    ├── LICENSE
    └── play
        └── main.go
    
    1 directory, 2 files

    play디렉터리에 있는 main.go 파일 내용은 아래와 같습니다.

    package main
    
    import (
        "fmt"
        "github.com/NanXiao/stack"
    )
    
    func main() {
        s := stack.New()
        s.Push(0)
        s.Push(1)
        s.Pop()
        fmt.Println(s)
    }

    main 함수에는 stack이라는 종속성 패키지가 있습니다.

     

     

    go get 수행


    $GOPATH 디렉터리 안을 정리한 뒤, go get 커맨드를 사용하여 playstack을 다운로드합니다.

    # cd $GOPATH
    
    # tree
    .
    
    0 directories, 0 files
    
    # go get github.com/NanXiao/playstack
    package github.com/NanXiao/playstack: no buildable Go source files in /root/gocode/src/github.com/NanXiao/playstack

    빌드를 할 수 없다(no buildable Go source files in...)는 문구가 뜹니다.

    이유는 go get은 저장소가 아닌 패키지에서 동작하기 때문입니다. (playstack 안에는 *.go 소스파일이 없기 때문에 유효한 패키지가 아닙니다.)

     

    대신에 go get github.com/NanXiao/playstack/play 명령어를 사용합니다.

    # go get github.com/NanXiao/playstack/play
    # tree
    .
    ├── bin
    │   └── play
    └── src
        └── github.com
            └── NanXiao
                ├── playstack
                │   ├── LICENSE
                │   └── play
                │       └── main.go
                └── stack
                    ├── LICENSE
                    ├── README.md
                    ├── stack.go
                    └── stack_test.go
    7 directories, 7 files

    playstack과 종속성(stack)이 모두 다운로드되었을 뿐만 아니라 bin경로에 컴파일 및 설치도 되었음을 볼 수 있습니다.

     

    컴파일 및 설치가 아닌 소스 파일만 다운로드하려면 go get -d명령을 사용하면 됩니다.

    # tree
    .
    
    0 directories, 0 files
    
    # go get -d github.com/NanXiao/playstack/play
    
    # tree
    .
    └── src
        └── github.com
            └── NanXiao
                ├── playstack
                │   ├── LICENSE
                │   └── play
                │       └── main.go
                └── stack
                    ├── LICENSE
                    ├── README.md
                    ├── stack.go
                    └── stack_test.go
    
    6 directories, 6 files

    소스 파일만 다운로드되었음을 확인할 수 있습니다.

     

    go get -u를 사용하여 패키지와 해당 종속성을 업데이트할 수도 있습니다.

     

    참고: https://nanxiao.gitbooks.io/golang-101-hacks/content/posts/use-govendor-to-implement-vendoring.html

    728x90

    '언어 > Go 언어' 카테고리의 다른 글

    [Go] JSON 패키지 알아보기  (0) 2021.01.02
    [Go] context 사용하기  (0) 2020.12.14
    [Go] context 알아보기  (0) 2020.12.13
    [Go] Modules 사용하기  (0) 2020.12.07
    [Go] Modules 알아보기  (0) 2020.12.06
    Comments