2017-01-11 4 views
1

におけるベンダーとエラー「パッケージを見つけることができません」解決は私のような下に見えるプロジェクトの構造を持って行く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ですべて正常に動作しますか? $(go list ./... | grep -v /vendor/)の出力での改行は、いくつかの問題を引き起こしていた私の地元で

UPDATE

。だからこれを解決するために、私はjimbの解決策を少し修正しなければなりませんでした。私はMakefilePKG = $(shell go list ./... | grep -v /vendor/ | tr "\n" " ")で変数を導入し、その後_libsディレクトリは_で始まり、そしてgoツールによって無視され@go build $(GOFLAGS) $(PKG)

+0

'vendor /'の中には依存関係のないパッケージがありますが、それらをビルドしていないと思います。 '。/ ...'を使わず、ビルドしたいパッケージだけをインストールしてください。 – JimB

+0

しかし、すべての依存関係が '_lib'の下でうまくいけば、すべてうまくいっていました。また、 'go install。/ ...'を使ってはいけないと言っていますか? – tuk

+2

'_lib'の先頭にアンダースコアを付けた理由は、あなたがそれまでに働いたことがない限り、goツールで無視されるためです。いいえ、この場合は、 'go install。/ ...'を使ってはいけません。ビルドしたい特定のメインパッケージだけをインストールしてください。 – JimB

答えて

3

ようgo install & go buildでその変数を使用していました。パッケージをvendor/に移動すると、./...ワイルドカードにすべてのパッケージがベンダーディレクトリに追加されるようになりました。

./...ワイルドカードに頼るのではなく、インストールするパッケージを明示的に表示する必要があります。ワイルドカードの動作を依然として希望する場合は、go list ./...を使用し、パスにvendor/ディレクトリを含むパッケージをフィルタすることができます。あなたの特定のニーズに応じて、これは次のような単純なものになります:

関連する問題