golang 安裝依賴


 

 go get -d -v ./...

 

以下載grpc為例

grpc官方提供的下載命令是:

go get google.golang.org/grpc 

因為無法訪問,所以我們需要在$GOPATH/src目錄下面創建一個google.golang.org的目錄。
在github上找到對應的grpc的包,https://github.com/grpc/grpc-go
其實google.golang.org對應的就是https://github.com/grpc/grpc-go
然后我們進入到$GOPATH/src/google.golang.org這個目錄。執行git命令

git clone --depth=1 https://github.com/grpc/grpc-go.git grpc 

命令解析:
其中--depth=1 這個參數的意思是只克隆最新的commit分支。不加也行。
最后的grpc表示的是將克隆的文件存放到那個文件夾里面。
執行完上面的命令,我們就成功的將grpc的包下載到本地了。

go get google.golang.org/grpc 

golang當中go get其實執行了兩個操作,一個是git clone 另外一個go install。所以我們還要進入到$GOPATH/src/google.golang.org/grpc當中執行以下go install 。這個命令會在$GOPATH/pkg/google.golang.org/grpc下面生成一個grpc.a的外部包文件。用於和其他程序訪問和編譯。並且在go install的過程當中我們可以檢查哪些相關依賴的包沒有安裝,可以使用相同的辦法進行安裝。

tips 1

  復制代碼
如何自動下載所有依賴包?
大部分情況下大家下載 Go 項目都是使用go get命令,它除了會下載指定的項目代碼,還會去下載這個項目所依賴的所有項目。

但是有的時候我們的項目由於各種原因並不是通過go get下載的,是通過git clone下載的,這樣代碼下下來就沒有依賴包了,沒辦法編譯通過的。這樣的話怎么辦呢?

 go get -d -v ./...
 

-d標志只下載代碼包,不執行安裝命令;
-v打印詳細日志和調試日志。這里加上這個標志會把每個下載的包都打印出來;
./...這個表示路徑,代表當前目錄下所有的文件。
復制代碼
 

tips2 

go: github.com/go-sql-driver/mysql@v1.5.0: Get "https://proxy.golang.org/github.com/go-sql-driver/mysql/@v/v1.5.0.mod": dial tcp 172.217.24.17:443: i/o timeout
root@cloud:~/tron-go# export GOPROXY=https://mirrors.aliyun.com/goproxy/
root@cloud:~/tro-go# make -j 48 
go: downloading golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae
go: downloading go.starlark.net v0.0.0-20200619143648-50ca820fafb9
go: downloading google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5
go: downloading golang.org/x/text v0.3.3

 

開啟GO111MODULE
用環境變量 GO111MODULE 開啟或關閉模塊支持,它有三個可選值:off、on、auto,默認值是 auto。
GO111MODULE=off 無模塊支持,go 會從 GOPATH 和 vendor 文件夾尋找包。
GO111MODULE=on 模塊支持,go 會忽略 GOPATH 和 vendor 文件夾,只根據 go.mod 下載依賴。
GO111MODULE=auto 在 GOPATH/src/mod 中,也會把 go install 的結果放在 $GOPATH/bin 中。
go env -w GO111MODULE=on
 

 

 
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/coverage/coverage.go:35:2: cannot find module providing package github.com/bazelbuild/rules_go/go/tools/coverdata: module github.com/bazelbuild/rules_go/go/tools/coverdata: reading https://mirrors.aliyun.com/goproxy/github.com/bazelbuild/rules_go/go/tools/coverdata/@v/list: 404 Not Found
root@cloud:/gvisor# unset GOPROXY
root@cloud:/gvisor# go get gvisor.dev/gvisor/runsc@go
go get gvisor.dev/gvisor/runsc@go: gvisor.dev/gvisor/runsc@go: invalid version: Get "https://proxy.golang.org/gvisor.dev/gvisor/runsc/@v/go.info": dial tcp 216.58.200.241:443: i/o timeout
root@cloud:/gvisor# go get https://github.com/bazelbuild/rules_go.git
go get https:/github.com/bazelbuild/rules_go.git: malformed module path "https:/github.com/bazelbuild/rules_go.git": invalid char ':'
root@cloud:/gvisor# go get github.com/bazelbuild/rules_go

 

git clone 

 

 

root@cloud:/gvisor# export GOPROXY=https://mirrors.aliyun.com/goproxy/
root@cloud:/gvisor# go get gvisor.dev/gvisor/runsc@go
go: found gvisor.dev/gvisor/runsc in gvisor.dev/gvisor v0.0.0-20201228220549-5c21c7c3bd15
go: finding module for package github.com/bazelbuild/rules_go/go/tools/coverdata
go: downloading github.com/bazelbuild/rules_go v0.25.1
go: found github.com/bazelbuild/rules_go/go/tools/coverdata in github.com/bazelbuild/rules_go v0.25.1
# gvisor.dev/gvisor/pkg/sentry/platform/ring0/pagetables
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_empty.go:121:14: pudEntry.SetSuper undefined (type *PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_empty.go:132:22: pudEntry.IsSuper undefined (type *PTE has no field or method IsSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_empty.go:138:24: pmdEntries[index].SetSuper undefined (type PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_empty.go:175:15: pmdEntry.SetSuper undefined (type *PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_empty.go:186:23: pmdEntry.IsSuper undefined (type *PTE has no field or method IsSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:121:14: pudEntry.SetSuper undefined (type *PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:132:22: pudEntry.IsSuper undefined (type *PTE has no field or method IsSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:138:24: pmdEntries[index].SetSuper undefined (type PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:175:15: pmdEntry.SetSuper undefined (type *PTE has no field or method SetSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:186:23: pmdEntry.IsSuper undefined (type *PTE has no field or method IsSuper)
/opt/gopath/pkg/mod/gvisor.dev/gvisor@v0.0.0-20201228220549-5c21c7c3bd15/pkg/sentry/platform/ring0/pagetables/walker_lookup.go:186:23: too many errors
note: module requires Go 1.15
root@cloud:/gvisor# 

 

note: module requires Go 1.15

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM