에서 공급 업체와 오류 '패키지를 찾을 수 없습니다'해결은 내가 좋아 아래 보이는 프로젝트 구조를 가지고 이동 1.7
github.com
golang.org
x
net
gopkg.in
내 Makefile
아래처럼 보입니다 : -
.PHONY: deploy
LOGLEVEL ?= 1
CONFIGFILE ?= 2
GOFLAGS ?= $(GOFLAGS:)
PWD = $(shell pwd)
export GOPATH = $(shell echo $$GOPATH):$(PWD)/_libs:$(PWD)
export GOBIN = $(PWD)/bin
export GOROOT = $(shell echo $$GOROOT)
deploy: clean build install
build:
@rm -rf pkg/ 2>/dev/null
@rm -rf _libs/pkg/ 2>/dev/null
@go build $(GOFLAGS) ./...
install:
@go install ./...
clean:
@go clean $(GOFLAGS) -i ./...
## EOF
모든 것이 잘 작동합니다. 이제 vendor
으로 이동할 생각입니다. 그래서 vendor
에 _libs
내 이름이 바뀐 수정 내 Makefile
다음과 같은 : - :
vendor/golang.org/x/net/html/charset/charset.go:20:2: cannot find package "golang.org/x/text/encoding" in any of:
/Users/debraj/golang/src/b/m/session-service/vendor/golang.org/x/text/encoding (vendor tree)
/usr/local/go/src/golang.org/x/text/encoding (from $GOROOT)
/Users/debraj/golang/src/golang.org/x/text/encoding (from $GOPATH)
/Users/debraj/golang/src/b/m/session-service/src/golang.org/x/text/encoding
vendor/golang.org/x/net/html/charset/charset.go:21:2: cannot find package "golang.org/x/text/encoding/charmap" in any of:
/Users/debraj/golang/src/b/m/session-service/vendor/golang.org/x/text/encoding/charmap (vendor tree)
/usr/local/go/src/golang.org/x/text/encoding/charmap (from $GOROOT)
/Users/debraj/golang/src/golang.org/x/text/encoding/charmap (from $GOPATH)
/Users/debraj/golang/src/b/m/session-service/src/golang.org/x/text/encoding/charmap
vendor/golang.org/x/net/html/charset/charset.go:22:2: cannot find package "golang.org/x/text/encoding/htmlindex" in any of:
/Users/debraj/golang/src/b/m/session-service/vendor/golang.org/x/text/encoding/htmlindex (vendor tree)
/usr/local/go/src/golang.org/x/text/encoding/htmlindex (from $GOROOT)
/Users/debraj/golang/src/golang.org/x/text/encoding/htmlindex (from $GOPATH)
/Users/debraj/golang/src/b/m/session-service/src/golang.org/x/text/encoding/htmlindex
vendor/golang.org/x/net/html/charset/charset.go:23:2: cannot find package "golang.org/x/text/transform" in any of:
/Users/debraj/golang/src/b/m/session-service/vendor/golang.org/x/text/transform (vendor tree)
/usr/local/go/src/golang.org/x/text/transform (from $GOROOT)
/Users/debraj/golang/src/golang.org/x/text/transform (from $GOPATH)
/Users/debraj/golang/src/b/m/session-service/src/golang.org/x/text/transform
vendor/golang.org/x/net/http2/h2i/h2i.go:38:2: cannot find package "golang.org/x/crypto/ssh/terminal" in any of:
/Users/debraj/golang/src/b/m/session-service/vendor/golang.org/x/crypto/ssh/terminal (vendor tree)
/usr/local/go/src/golang.org/x/crypto/ssh/terminal (from $GOROOT)
/Users/debraj/golang/src/golang.org/x/crypto/ssh/terminal (from $GOPATH)
/Users/debraj/golang/src/b/m/session-service/src/golang.org/x/crypto/ssh/terminal
환경 : - -
- 가고
export GOPATH = $(shell echo $$GOPATH):$(PWD)
그러나 나는 다음과 같은 오류를 받기 시작이 후
버전 go1.7.3 darwin/amd64 - Mac OS X 10.11.6
누구나 내가 왜 vendor
으로 위의 오류가 발생하는지 알 수 있습니까? 그러나 모든 것이 _libs
과 함께 잘 작동합니까?
UPDATE $(go list ./... | grep -v /vendor/)
의 출력에서 뉴 라인 내 로컬에서
몇 가지 문제가 발생했다. 그래서 이것을 해결하기 위해 나는 jimb
의 해결책을 조금 수정해야했습니다. 나는 Makefile
PKG = $(shell go list ./... | grep -v /vendor/ | tr "\n" " ")
에서 변수를 도입하고 _libs
디렉토리 _
로 시작하고 go
도구에 의해 무시됩니다 @go build $(GOFLAGS) $(PKG)
종속성을 모두 가지고 있지 않지만 전에 빌드하지 않은 패키지가'vendor /'에 있다고 생각합니다. './...'을 사용하지 말고, 빌드하고자하는 패키지 만 설치하십시오. – JimB
그러나'_lib'에서 모든 의존성을 가지고 있었을 때 모든 것이 잘 작동했습니다. 또한'go install./...'을 사용해서는 안된다는 말입니까? – tuk
'_lib' 접두어 앞에 밑줄을 붙인 이유는 이동 도구에 의해 무시되도록하기 위해서입니다. (이전에 그런 행운이 없었 으면) 이전에 작동했던 이유입니다. 아니요,이 경우에는'go install./... '을 사용하면 안됩니다. 빌드하려는 특정 기본 패키지 만 설치하십시오. – JimB