golang包管理工具 glide 使用教程
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。類似 Java 的 Maven,PHP 的 Composer.
主要特性:
- 簡單管理依賴
- 支援 versioning packages,包括 Semantic Versioning 2.0.0 支援
- 支援 aliasing packages (e.g. for working with github forks)
- Remove the need for munging import statements
- 支援所有 go 工具
- 支援 VCS 工具和 Go 支援:git、bzr、hg、svn
- 支援定製本地和全域性外掛 (see docs/plugins.md)
- 倉庫快取
結構
- $GOPATH/src/myProject (Your project)
|
|-- glide.yaml
|
|-- glide.lock
|
|-- main.go (Your main go code can live here)
|
|-- mySubpackage (You can create your own subpackages, too)
| |
| |-- foo.go
|
|-- vendor
|-- github.com
|
| -- Masterminds
|
|-- ... etc.
安裝
# 下載原始碼包(目前版本:0.12.3)
go get github.com/Masterminds/glide
# 進入目錄
cd github.com/Masterminds/glide
# 編譯
# 注意,如果是離線安裝的話,需要執行 go install
make build
go build -o glide -ldflags "-X main.version=v0.11.0" glide.go
使用
檢測專案的依賴包
Glide 能檢測專案的依賴包 並且 建立一個名為 glide.yaml 的檔案。能自動識別 Godep, GPM, Gom, and GB 等工具的配置檔案。在 專案的 根目錄 執行如下命令:
glide init // 會產生 glide.yaml
執行 glide init 命令的時候,會詢問你是否需要以嚮導的方式提示及配置依賴包的版本,每步操作都需要你的確認。
更新依賴包
執行如下命令,依據配置檔案 glide.yaml 的內容,計算各個依賴包的精確版本號:
glide up
“up”是“update”的簡寫。這個命令會根據 glide.yaml 檔案計算所需依賴包,並遞迴計算依賴包所需依賴包,並且確認各個依賴包的版本號。最後把這些資訊寫到一個名為 glide.lock 的檔案中。
Glide 會把所有依賴包放到專案根目錄的 vendor/ 目錄下。如果某個依賴包有自己的 vendor/ 目錄,預設情況下,Glide 不會刪除它。go 工具鏈會使用它們的巢狀版本。如果想移除它們,使用 up 或 install 命令時,再加一個 --strip-vendor 或 -v 標籤。
安裝依賴包
如果想下載所需依賴包,執行如下命令:
glide install
這個命令會做以下 2 件事:
(1) 如果 glide.lock 檔案已經存在,Glide 會把 glide.lock 中已經計算好的確定版本號的依賴包批量下載到 vendor/ 目錄下;
(2) 如果 glide.local 檔案不存在,則會先執行 update 命令;
增加更多的 依賴包
使用 get 命令,Glide 能幫你新增更多的依賴包到 glide.yaml 檔案中,如下所示:
glide get github.com/Masterminds/semver
glide get 命令功能 類似 go get,但是它會把依賴包下載到 vendor/ 目錄,並且把相關資訊配置到 glide.yaml 檔案。
這個 get 命令 也可以帶版本號,如下所示:
glide get github.com/Masterminds/semver#~1.2.0
“#”是依賴包 和 版本號的分隔符,版本號可以是 語義版本,範圍版本,分支版本,標籤 或 提交的版本ID。
如果沒有指定 具體版本號 或 範圍版本號, Glide 會使用 語義版本號,並且提示要求你確認所需要的版本號
注意:
glide 會把下載下來的包快取到 ~/.glide/cache 目錄下 。
版本號的指定(version欄位)
Glide 支援 語義版本,範圍版本,分支版本,標籤版本,版本ID 最為版本號。
基本範圍
舉個簡單例子,範圍版本 > 1.2.3,表示 Glide 會用 大於 1.2.3 以後的最新版本。目前支援如下操作符:
- =: equal (aliased to no operator)
- !=: not equal
- >: greater than
- <: less than
- >=: greater than or equal to
- <=: less than or equal to
它們還可以組合用,“,” 表示 “邏輯與”,“||”表示“邏輯或”,如 “>= 1.2, < 3.0.0 || >= 4.2.3”
連字元範圍
- 1.2 - 1.4.5 which is equivalent to >= 1.2, <= 1.4.5
- 2.3.4 - 4.5 which is equivalent to >= 2.3.4, <= 4.5
萬用字元比較
字元 “x”、“X”、"*" 可以當做萬用字元,它可以應用於所有的比較操作中。當應用於“=”操作符中,它表示補丁最低級別的比較,如下所示:
- 1.2.x is equivalent to >= 1.2.0, < 1.3.0
- >= 1.2.x is equivalent to >= 1.2.0
- <= 2.x is equivalent to < 3
- * is equivalent to >= 0.0.0
波浪線 範圍比較(補丁)
波浪線比較操作符主要用於補丁級別範圍比較,當為次要版本數字沒指定時,次要版本不變,主版本修改。如下所示:
- ~1.2.3 is equivalent to >= 1.2.3, < 1.3.0
- ~1 is equivalent to >= 1, < 2
- ~2.3 is equivalent to >= 2.3, < 2.4
- ~1.2.x is equivalent to >= 1.2.0, < 1.3.0
- ~1.x is equivalent to >= 1, < 2
脫字元 範圍比較(主版本)
脫字元比較操作符是 為主版本號修改服務的。通常用於介面 主版本比較,如下所示:
- ^1.2.3 is equivalent to >= 1.2.3, < 2.0.0
- ^1.2.x is equivalent to >= 1.2.0, < 2.0.0
- ^2.3 is equivalent to >= 2.3, < 3
- ^2.x is equivalent to >= 2.0.0, < 3
glide.yaml 檔案
檔案 glide.yaml 包含了 當前包(專案)及依賴包 的相關資訊,以下示例羅列了該檔案的主要元素:
package: github.com/Masterminds/glide
homepage: https://masterminds.github.io/glide
license: MIT
owners:
- name: Matt Butcher
email: [email protected]
homepage: http://technosophos.com
- name: Matt Farina
email: [email protected]
homepage: https://www.mattfarina.com
ignore:
- appengine
excludeDirs:
- node_modules
import:
- package: gopkg.in/yaml.v2
- package: github.com/Masterminds/vcs
version: ^1.2.0
repo: [email protected]:Masterminds/vcs
vcs: git
- package: github.com/codegangsta/cli
version: f89effe81c1ece9c5b0fda359ebd9cf65f169a51
- package: github.com/Masterminds/semver
version: ^1.0.0
testImport:
- package: github.com/arschles/assert
有以下元素:
- package: 頂級包匯入路徑,即 相對 GOPATH/src 的包的匯入路徑。
- license: 專案的使用權協議。
- owners: 專案的作者資訊,如 姓名、聯絡方式(email)、個人主頁 等。
- ignore: 需要忽略匯入的包名列表。注意,不是資料夾名。
- excludeDirs: 需要忽略掃描依賴包的資料夾列表。
- import: 需要匯入的依賴包,每個依賴包 包含以下元素:
- package: 包路徑資訊。
- version: 版本號,如 語義版本、範圍版本、分支版本、標籤版本、提交號版本等,更多的資訊檢視文件:versioning documentation。
- repo: 包的倉庫地址資訊。如果包名不是包倉庫路徑資訊 或者是 私有倉庫,可以從線上的倉庫 check out 檔案到 包名中指定的(本地)路徑,也可以使用 fork 指令。
- vcs: 使用到的版本控制系統,如 git、hg、bzr 或 svn。如果不能從上述的 package 中確定 版本控制系統型別的話,需要在這裡指定。如 倉庫路徑帶有 .git 字尾 或 GitHub 倉庫路徑 等都可以自動識別型別為 git。
- subpackages: 當前包所使用到的子包名列表。
- os: 能適用於哪些作業系統? 與 執行時(runtime) 當中的 作業系統變數(GOOS) 匹配比較,如果是匹配上,就獲取該包。
- arch: 能使用於哪些結構?與 執行時(runtime) 當中的 runtime architecture 變數(GOARCH)匹配比較,如果匹配上,就獲取該包。
- testImport: 用於測試的包。
相關推薦
golang包管理工具 glide 使用教程
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。類似 Java 的 Maven,PHP 的 Composer. 主要特性: 簡單管理依賴 支援 versioning packages,包括 Sema
Golang包管理工具Glide,你值得擁有
“依賴地獄”是每個程式設計師在成長之路上都會面臨的情況,首先我們通過語義化版本來控制軟體的版本,然後在我們的專案裡通過指定軟體版本來達到控制依賴的目的。 如:你的專案A依賴多個專案B1,B2,B3,而B1,B2,B3又依賴著其它專案C1,C2…。一個專案依賴這
Golang包管理工具(二)之glide的使用
1. glide簡介 glide是一個golang專案的包管理工具,非常方便快捷,一般只需要2-3個命令就可以將go依賴包自動下載並歸檔到vendor的目錄中。glide官網參考:https://
Go 包管理工具--glide
網上有一篇解釋glide比較好的文章:https://my.oschina.net/u/553243/blog/1475626 在命令列中輸入glide $glide NAME: glide - Vendor Package Management for your Go projects.
golang包管理工具dep使用簡明攻略
安裝 dep需要golang版本在1.9以上go get -u github.com/golang/dep/cmd/dep dep工作流 因為有牆,所以使用之前請先設定命令列代理,梯子自備 export {http,https}_proxy='127.0.0.1:1
Golang包管理工具之govendor的使用
1. govendor簡介golang工程的依賴包經常使用go get命令來獲取,例如:go get github.com/kardianos/govendor ,會將依賴包下載到GOPATH的路徑下。常用的依賴包管理工具有godep,govendor等,在Golang1.5
[golang] Glide 包管理工具,在windows10 64位系統上的bug修復方案
環境 all 管理工具 oos for 討論 pos inb direct bug重現 [ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1
Golang專案管理實踐一--Golang包管理特點以及Glide工具的使用
文章內容 Golang包管理的特點 Golang包管理的注意點 結合Glide工具進行包管理實踐 總結 由於Golang特殊的包管理策略,同時,目前並沒有成熟的包管理工具,因此需要我們在管理Golang專案時,需要首先考慮適合專案的一種包管理策略,
Golang學習筆記之依賴包管理工具gvt
一、gvt概念 gvt全稱為Go vendoring tool,可譯為Go供應工具,或者意譯為Go依賴包依賴包工具,whatever~~,簡單來說就是可以方便的獲取、更新、刪除專案所依賴的工具包,這個特性在Go1.5之前並不支援,1.5版本中需要設定GO15VENDOREX
golang開發:(四)包管理器 glide的使用
glide 是golang專案開發中是特別重要的軟體,沒有它,golang的專案可能都無法釋出。 為什麼要使用glide 平時我們開發Go專案的時候,使用第三方的包的時候都直接使用go get 去獲取第三方的包,但是go get獲取到的包是專案的develop分支,我們開發的時候倒是可以不怎麼關注。但是如
Python包管理工具(pip)
too led -i min date pycuda nts nbsp env 1 前言 pip 是一個Python包管理工具,主要是用於安裝 PyPI 上的軟件包,可以替代 easy_install 工具。 GitHub: https://github.
Python包管理工具pip的基本使用
1.0 配置 .net 簡介 pac com 新的 png == 參考網址:https://pip.pypa.io/en/latest/quickstart/ 1.簡介 pip 是一個Python包管理工具,主要是用於安裝 PyPI 上的軟件包,可以替代 easy_inst
iOS包管理工具Cocoapods的安裝與使用
data == 鏡像 tracking libtool 們的 install 包管理 問題解決 在我們開發移動應用的時候,一般都會使用到第三方工具,而因為第三方類庫的種類繁多,我們在項目中進行管理也會相對麻煩,所以此時我們就須要一個包管理工具。在iOS開發中
windows安裝python包管理工具pip
pipwindows安裝python包管理工具pip pip 是一個Python包管理工具,主要是用於安裝 PyPI 上的軟件包,可以替代 easy_install 工具。一、前期準備 首先確認windows機器上面是否已經安裝好了python。在cmd中輸入python --version和py
Linux 入門記錄:二十、Linux 包管理工具 YUM
倉庫 清理 bug entos 需要 tro eat 參數 基於組 一、YUM(Yellowdog Updater, Modified) 1. yum 簡介 RPM 軟件包形式管理軟件雖然方便,但是需要手動解決軟件包的依賴問題。很多時候安裝一個軟件首先需要安裝 1 個或
9、程序包管理工具
程序包管理1、程序包的組成: 由四部分組成:二進制格式文件、庫文件、配置文件、及幫助文件。 2、程序包管理工具作用:管理工具用來管理程序的安裝、升級、卸載、查詢、校驗等操作。3、項目構建工具:用來解決哪些源文件先編譯,哪些庫文件先編譯,源文件和庫文件的依賴關系。c、c++:程序包項目構建工具:makejava
python3包管理工具問題
工具 kaa dpa ec2 使用 rpi cux mod wpa 關於使用鏈表求兩個集合的交集並集和差集的問題 精通正則表達式七:占有優先量詞和量化分組 Shell腳本的靜態檢查工具shellcheck 反射_程序集_打包庫文件_引用庫文件 yq7人餒缺http:
Python的支持工具[0] -> 環境包管理工具 -> Anaconda
times 自動集成 conda python版本 rom 信息 常用 安裝環境 https Anaconda包管理工具 / Anaconda Package Management Tools Anaconda is the world’s most popular
Python的支持工具[0] -> 環境包管理工具 -> pip
版本 net ber body ins 包管理工具 csdn strong 軟件 pip包管理工具 / pip Package Management Tools pip是一個Python包管理工具,主要是用於安裝PyPI上的軟件包,可以替代easy_install工具
c++包管理工具conan使用
all () dad trac mat tom soft pre clone 安裝 sudo pip install conan 參考官網的demo git clone https://github.com/memsharded/example-poco-timer.git