Golang 安裝第三方包
最近幫一個朋友安裝golang的環境,本以為應該很快就能解決,結果是花了一個多小時,發現自己對go安裝的原理不是很理解,認真復習一番,做一個總結:
golang安裝第三方的前提
必須設置GOPATH
-
linux
vim /etc/profile export GOROOT=/usr/local/go // 設置為你自己的go安裝目錄 export GOPATH=$HOME/gocode // 設置為自己的go項目的工作區間 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin // 原路徑后用冒號連接新路徑 source /etc/profile // 使文件立刻生效
-
mac
cd ~ vim .bash_profile export GOROOT=/usr/local/opt/go\@1.9/libexec //golang安裝路徑 export GOPATH=/usr/local/Cellar/go/1.7.6 // 工作路徑 export GOBIN=$GOPATH/bin // 可執行文件 export PATH=$PATH:$GOROOT/bin:$GOBIN // path導入路徑 source ~/.bash_profile // 使文件立刻生效
-
window : GOPATH,額外 安裝git
其實linux和mac系統也需要git,不過這兩者都默認擁有git。而windows是需要自主安裝的
-
去git官網下載git並安裝
-
再設置GOPATH:
右鍵我的電腦——高級系統設置——環境變量,系統變量下 點擊【新建】
輸入: 第1行:GOPATH 第2行:你指定路徑,例如: D:\go\gopath (注意去掉末尾的分號)
-
golang安裝第三包的方式
-
自動安裝:通過
go get xxx
命令來安裝這條命令會把遠端的第三方包下載並解壓到你的
GOPATH
路徑下的src文件夾
里面去,並執行go install xxx
命令來安裝該包,結果是在GOPATH
路徑的pkg文件夾
生成xxx.a
文件- 實際上
go get
就是git clone
+go install
的組合 - 由上面可知, windows在調用
go get
之時使用到了git
,所以必須先安裝安裝git
- 實際上
-
手動安裝:
-
先下載該包,並按照該包官方的下載路徑 為該包創建對應的
gopath/src
下里面的路徑,注意這一步很關鍵!第三包在src里的路徑不能隨意放在一個文件夾中,因為第三方包內部的文件里還有對其它包的引用,如果隨意放置會導致導入路徑失效。
-
將包移入到該路徑,執行
go install
命令安裝這個文件
-
go get的一些使用細節
添加-x
參數:打印安裝的具體過程,(golang安裝遵循的是linux的哲學,沒有消息就是最好的消息,所有默認是沒有任何提示的)
添加-d
參數:只下載代碼包到src目錄下,不編譯和安裝
添加-u
參數:該命令利用網絡來更新已有代碼包及其依賴包。默認情況下,該命令只會從網絡上下載本地不存在的代碼包,而不會更新已有的代碼包。
添加-f
參數:僅在使用-u
標記時才有效。該標記會讓命令程序忽略掉對已下載代碼包的導入路徑的檢查。如果下載並安裝的代碼包所屬的項目是你從別人那里Fork過來的,那么這樣做就尤為重要了。
添加-fix
參數:修復因Go語言規范變更而造成的語法級別的錯誤
添加-t
參數:讓命令額外下載代碼包中測試源碼文件中依賴的代碼包
添加-insecure
參數:允許命令程序使用非安全的scheme(如HTTP)去下載指定的代碼包。如果你用的代碼倉庫(如公司內部的Gitlab)沒有HTTPS支持,可以添加此標記。請在確定安全的情況下使用它。
標記名稱 | 標記描述 |
---|---|
-x | 打印安裝的具體過程 |
-d | 讓命令程序只執行下載動作,而不執行安裝動作。 |
-u | 讓命令利用網絡來更新已有代碼包及其依賴包。默認情況下,該命令只會從網絡上下載本地不存在的代碼包,而不會更新已有的代碼包。 |
-f | 僅在使用-u 標記時才有效。該標記會讓命令程序忽略掉對已下載代碼包的導入路徑的檢查。如果下載並安裝的代碼包所屬的項目是你從別人那里Fork過來的,那么這樣做就尤為重要了。 |
-fix | 讓命令程序在下載代碼包后先執行修正動作,而后再進行編譯和安裝。 |
-t | 讓命令程序同時下載並安裝指定的代碼包中的測試源碼文件中依賴的代碼包。 |
-insecure | 允許命令程序使用非安全的scheme(如HTTP)去下載指定的代碼包。如果你用的代碼倉庫(如公司內部的Gitlab)沒有HTTPS支持,可以添加此標記。請在確定安全的情況下使用它。 |
作者:陳卧蟲
鏈接:https://www.jianshu.com/p/97738b026521
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。