go get時出現‘xxx is deprecated’

oliver-l發表於2021-12-25

最近在學習go的grpc需要使用protobuf,protoc-gen-go包可以生成golang的protobuf版本協議程式碼

在mac開發環境下,使用以下命令安裝包時會報錯

go get -u github.com/golang/protobuf/protoc-gen-go

報錯內容是以下內容:

go get時出現program not found or is not executable

報錯資訊為go1.17版本以後,不贊成使用go get來安裝包,而是通過go install的方式安裝包

這裡我使用了我個人的解決方法

進入到golang/protobuf下載原始碼

  • 進入protobuf目錄
  • 進入protoc-gen-go目錄下
  • 執行命令go build
  • 執行命令go install

這裡簡單介紹一下go build和go install

go build

通過go build加上要編譯的Go原始檔名,我們即可得到一個可執行檔案,預設情況下這個檔案的名字為原始檔名字去掉.go字尾。

go install

與build命令相比,install命令在編譯原始碼後還會將可執行檔案或庫檔案安裝到約定的目錄下。

  • go install編譯出的可執行檔案以其所在目錄名(DIR)命名

  • go install將可執行檔案安裝到與src同級別的bin目錄下,bin目錄由go install自動建立

  • go install將可執行檔案依賴的各種package編譯後,放在與src同級別的pkg目錄下

此時在GOPATH的/bin目錄下會存在protoc-gen-go的可執行檔案

go get時出現program not found or is not executable

將$GOPATH/bin目錄加入到環境變數中,這樣後續只要使用go install生成的命令就可以直接執行了。

這時編輯/etc/profile檔案將此文字加入profile檔案中,這裡的$GOPATH變數為你本地GO的GOPATH路徑

export PATH="$PATH:$GOPATH/bin" >> /etc/profile

這時問題就解決了!可以通過命令protoc --go_out=plugins=grpc:. *.proto 匯出golang的protocbuf協議程式碼

go get時出現‘xxx is deprecated’

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章