프로젝트를 할때 혼자 개발하는 것이 아니라면, dependency를 명확하게 관리 하는 것이 중요하다.
개발 환경을 세팅할 때 절대로 특정 모듈이나 라이브러리가 설치되어 있다고 가정해서는 안된다.
버전관리도 힘들고 서로 다른 환경에서 개발하게 될 수도 있다.
또한 이는 CI/CD를 위해서도 매우 중요하다.
회사에서 프로젝트 할때는 glide를 사용하는데..
dep이 golang의 공식 PM으로 될 것 같아 이번에는 dep을 설치 및 삽질을 해 보았다.
현재 기준(17.04.02)으로 아직 오피셜 하지는 않은 것 같다. 깃헙에 아래와 같이 나와 있다.dep is NOT an official tool. Yet.
Note that the manifest and lock file formats are not finalized
DEP 설치 및 실행
go get
명령어를 통해 간단히 설치 할 수 있다.
GOPATH에 따라서 자동으로 설치되는 위치가 정해지기 때문에 어디에서 명령어를 실행하든 상관없었다.
1 | > go get -u github.com/golang/dep/... |
dep init 명령어를 통해 dep을 설정 할 수 있다.
아무 곳에서나 하면 안되고, 내 repository 로 이동해서 실행해야 한다.
1 | C:\Users\kihoonkim\goworkspace> cd src\github.com\kihoonkim\gogo |
아래와 같이 vendor
디렉토리와 lock.json
, manifest.json
파일이 생성되는 것을 볼 수 있다.
dep ensure
를 통해 새로운 패키지를 설치, 업데이트를 할 수 있다.
glide는 버전을 명시 하지 않으면 최신 버전을 자동으로 받아 오는 것 같았는데..
dep는 @^1.0
처럼 버전을 정확히 명시해 줘야 했다.
1 | gogo > dep ensure github.com/jinzhu/gorm@^1.0 |
manifest.json
에 아래 처럼 등록 된 것을 확인 할 수 있다.
1 | { |
하지만.. vendor
디렉토리에 해당 패키지가 설치되지 않았다…
dep ensure -update
를 해도 반응이 없다……;;;;;
정식 릴리즈 되면… 써야겠다……ㅠ
일단 glide를 설치해서 사용하자.
Glide 설치 및 실행
glide 설치는 몇 가지 방법이 있지만, linux/mac 에서는 아래 쉘을 실행시키는 것이 제일 쉽다.
1 | > curl https://glide.sh/get | sh |
윈도우에서는 쉘스크립트 실행이 안되서 go get
으로 받아왔다.
1 | C:\Users\kihoonkim\goworkspace\src\github.com\kihoonkim\gogo> go get -u github.com/Masterminds/glide |
glide init
을 실행하면 dependency 명시를 위한 glide.yaml
파일이 생성된 것을 볼 수 있다.
GORM 패키지를 glide를 통해 다시 받아보자
1 | gogo> glide get -u github.com/jinzhu/gorm |
glide.yaml
파일에도 잘 들어가있고, vendor
디렉토리에 패키지가 잘 받아져 온 것을 확인 할 수 있다.
vendor
디렉토리에 받은 패키지를 모두 삭제하고 glide install
명령을 통해 다시 받아보았다.
1 | C:\Users\kihoonkim\goworkspace\src\github.com\kihoonkim\gogo> cd vendor |
1 | C:\Users\kihoonkim\goworkspace\src\github.com\kihoonkim\gogo> glide install |
Glide 명령어 정리
- get glide
curl https://glide.sh/get | sh
- initialization
glide init
- configuration
vi glide.yaml
- resolve the dependency
glide update
- reporoducible installations
glide install
- add more dependencies
glide get github.com/foo/bar
glide get github.com/foo/bar#^1.2.3
Glide 관련 파일, 디렉토리
gitingore
vendor 디렉토리나 glide.lock 파일은 glide update/install 시 생성되기 때문에 형상관리 될 필요가 없다..gitingore
에 추가해 놓자.
결론, dep가 공식 릴리즈 되기전까지 glide를 쓰자..
사용이 편하고, go get <–> glide get 처럼 명령어도 비슷해서 더 직관적이고 쉬운 것 같다.