go get命令——一鍵獲取代碼、編譯並安裝

 

go get 命令可以藉助代碼管理工具通過遠程拉取或更新代碼包及其依賴包,並自動完成編譯和安裝。整個過程就像安裝一個 App 一樣簡單。

這個命令可以動態獲取遠程代碼包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,需要安裝與遠程包匹配的代碼管理工具,如 Git、SVN、HG 等,參數中需要提供一個包名。

這個命令在內部實際上分成了兩步操作:第一步是下載源碼包,第二步是執行 go install。下載源碼包的 go 工具會自動根據不同的域名調用不同的源碼工具,對應關係如下:

BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)

所以爲了 go get 命令能正常工作,你必須確保安裝了合適的源碼管理工具,並同時把這些命令加入你的 PATH 中。其實 go get 支持自定義域名的功能。

參數介紹:

  • -d 只下載不安裝
  • -f 只有在你包含了 -u 參數的時候纔有效,不讓 -u 去驗證 import 中的每一個都已經獲取了,這對於本地 fork 的包特別有用
  • -fix 在獲取源碼之後先運行fix,然後再去做其他的事情
  • -t 同時也下載需要爲運行測試所需要的包
  • -u 強制使用網絡去更新包和它的依賴包
  • -v 顯示執行的命令

遠程包的路徑格式

Go語言的代碼被託管於 Github.com 網站,該網站是基於 Git 代碼管理工具的,很多有名的項目都在該網站託管代碼。其他類似的託管網站還有 code.google.com、bitbucket.org 等。

這些網站的項目包路徑都有一個共同的標準,參見下圖所示。
 


圖:遠程包路徑格式


圖中的遠程包路徑是 Go語言的源碼,這個路徑共由 3 個部分組成:

  • 網站域名:表示代碼託管的網站,類似於電子郵件 @ 後面的服務器地址。
  • 作者或機構:表明這個項目的歸屬,一般爲網站的用戶名,如果需要找到這個作者下的所有項目,可以直接在網站上通過搜索“域名/作者”進行查看。這部分類似於電子郵件 @ 前面的部分。
  • 項目名:每個網站下的作者或機構可能會同時擁有很多的項目,圖中標示的部分表示項目名稱。

go get+ 遠程包

默認情況下,go get 可以直接使用。例如,想獲取 go 的源碼並編譯,使用下面的命令行即可:

$ go get github.com/davyxu/cellnet

獲取前,請確保 GOPATH 已經設置。Go 1.8 版本之後,GOPATH 默認在用戶目錄的 go 文件夾下。

cellnet 只是一個網絡庫,並沒有可執行文件,因此在 go get 操作成功後 GOPATH 下的 bin 目錄下不會有任何編譯好的二進制文件。

需要測試獲取並編譯二進制的,可以嘗試下面的這個命令。當獲取完成後,就會自動在 GOPATH 的 bin 目錄下生成編譯好的二進制文件。

$ go get github.com/davyxu/tabtoy

go get 使用時的附加參數

使用 go get 時可以配合附加參數顯示更多的信息及實現特殊的下載和安裝操作,詳見下表所示。
 

go get 使用時的附加參數
附加參數 備  注
-v 顯示操作流程的日誌及信息,方便檢查錯誤
-u 下載丟失的包,但不會更新已經存在的包
-d 只下載,不安裝
-insecure 允許使用不安全的 HTTP 方式進行下載操作
 
發佈了79 篇原創文章 · 獲贊 40 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章