1. 程式人生 > >golang包管理工具 glide 使用教程

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