가장 빨리 만나는 Go 언어 Unit 38. 인터넷 소스 저장소의 패키지 사용하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

인터넷 소스 저장소의 패키지 사용하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

import 키워드는 로컬에 있는 패키지뿐만 아니라 인터넷의 소스 저장소에 올라와 있는 패키지도 사용할 수 있습니다.

Go 언어에서 지원하는 소스 저장소와 버전 관리 시스템은 다음과 같습니다.

  • GitHub: Git
  • BitBucket: Git, Mercurial
  • Launchpad: Bazaar
  • IBM DevOps Services: Git

먼저 소스 저장소의 패키지를 사용하기 전에 소스 저장소에서 사용하는 버전 관리 시스템을 설치해야 합니다. Windows와 Mac OS X는 다음 주소에서 설치 파일을 받아서 설치합니다.

리눅스에서는 다음 명령으로 각 버전 관리 시스템을 설치합니다.

Git

우분투
$ sudo apt-get install git
CentOS
$ sudo yum install git

Mercurial

우분투
$ sudo apt-get install mercurial
CentOS
$ sudo yum install mercurial

Subversion

우분투
$ sudo apt-get install subversion
CentOS
$ sudo yum install subversion

Bazaar

우분투
$ sudo apt-get install bzr
CentOS
$ sudo yum install bzr

다음과 같이 소스를 작성한 뒤 GOPATH/src/hello/hello.go 파일로 저장합니다. GOPATH를 설정하는 방법은 'Unit 3 기본 디렉터리 설정하기'를 참조하기 바랍니다.

GOPATH/src/hello/hello.go
package main

import (
	"fmt"
	"github.com/golang/example/stringutil"
)

func main() {
	fmt.Println(stringutil.Reverse("olleh"))
}

여기서 저장소 주소의 가장 마지막 디렉터리가 패키지 이름이 됩니다. 즉, stringutil.Reverse처럼 사용하면 됩니다.

다음과 같이 전역 패키지로 사용할 수 있습니다.

import (
	"fmt"
	. "github.com/golang/example/stringutil" // 전역 패키지
)

만약 다른 패키지와 이름이 중복된다면 별칭을 지정해도 됩니다.

import (
	"fmt"
	strutil "github.com/golang/example/stringutil" // strutil로 별칭 지정
)

이제 콘솔(터미널)에서 GOPATH/src/hello 디렉터리로 이동한 뒤 다음 명령을 실행합니다(Windows에서는 명령 프롬프트 또는 PowerShell을 실행합니다). 저는 GOPATH를 /home/pyrasis/hello_project로 설정하였습니다.

~$ cd $GOPATH/src/hello
~/hello_project/src/hello$ go get

이렇게 go get 명령을 실행하면 hello.go 파일에서 import로 설정한 GitHub 주소에서 패키지를 자동으로 받아옵니다. GOPATH/src 디렉터리를 보면 github.com/golang/example 디렉터리가 만들어져 있고, 패키지의 소스가 들어있습니다.

다음과 같이 go get <저장소 주소> 형식으로 명령을 실행하면 바로 패키지를 받아올 수도 있습니다. 이때는 패키지를 받아오기만 합니다. 따라서 이 패키지를 사용하려면 import로 패키지 주소(패키지 이름)를 설정해야 합니다.

$ go get github.com/golang/example/stringutil

다음은 소스 저장소별 주소 규칙입니다.

소스 저장소주소 규칙
GitHubgithub.com/계정/프로젝트
github.com/계정/프로젝트/디렉터리
github.com/계정/프로젝트/디렉터리/하위디렉터리
BitBucketbitbucket.com/계정/프로젝트
bitbucket.com/계정/프로젝트/디렉터리
bitbucket.com/계정/프로젝트/디렉터리/하위디렉터리
Launchpadlaunchpad.net/프로젝트
launchpad.net/프로젝트/시리즈
launchpad.net/프로젝트/시리즈/디렉터리
launchpad.net/프로젝트/시리즈/디렉터리/하위디렉터리

launchpad.net/~계정/프로젝트/브랜치
launchpad.net/~계정/프로젝트/브랜치/디렉터리
launchpad.net/~계정/프로젝트/브랜치/디렉터리/하위디렉터리
IBM DevOps Serviceshub.jazz.net/git/계정/프로젝트
hub.jazz.net/git/계정/프로젝트/디렉터리

표 38-1 소스 저장소별 주소 규칙


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2015-06-01