Golangパッケージ管理ツールのグライドチュートリアル
Golang Package Management Tool Glide Tutorial
元の住所: http://www.cnblogs.com/52php/p/6489605.html
侵入
GlideはGolangのベンダーパッケージマネージャーであり、ベンダーパッケージとベンダーパッケージを管理できます。 JavaのようなMaven、PHPのComposer。
- Github: https://github.com/Masterminds/glide
- オンラインドキュメント: http://glide.readthedocs.io/en/stable
主な特徴:
- 単純な管理依存
- Semantic Versioning2.0.0のサポートを含むバージョン管理パッケージのサポート
- エイリアシングパッケージのサポート(例:githubフォークの操作用)
- インポートステートメントを変更する必要がなくなります
- すべてのgoツールをサポートする
- VCSツールのサポートとGoのサポート:git、bzr、hg、svn
- カスタムローカルおよびグローバルプラグインのサポート(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.
インストール
# (current version:0.12.3) go get github.com/Masterminds/glide # cd github.com/Masterminds/glide # # Note that if you are installing offline, you need to execute go install make build go build -o glide -ldflags '-X main.version=v0.11.0' glide.go
使用する
プロジェクトの依存関係の検出
Glideはプロジェクトの依存関係を検出し、glide.yamlというファイルを作成できます。 Godep、GPM、Gom、GBなどのツールを自動的に認識するプロファイル。プロジェクトのルートで、次のコマンドを実行します。
Glide init // will produce glide.yaml
glide initコマンドを実行すると、依存関係パッケージのバージョンを要求して構成する必要があるかどうかを尋ねられます。各ステップには確認が必要です。
依存関係パッケージを更新する
次のコマンドを実行して、構成ファイルglide.yamlの内容に基づいて各依存関係パッケージの正確なバージョン番号を計算します。
glide up
「up」は「update」の略です。このコマンドは、glide.yamlファイルに基づいて必要な依存関係を計算し、依存パッケージに必要な依存関係を再帰的に計算し、各依存パッケージのバージョン番号を確認します。最後に、この情報をglide.lockというファイルに書き込みます。
Glideは、すべての依存関係をプロジェクトルートのvendor /ディレクトリに配置します。依存関係パッケージに独自のベンダー/ディレクトリがある場合、デフォルトではGlideはそれを削除しません。 goツールチェーンは、ネストされたバージョンを使用します。それらを削除する場合は、-strip-vendorまたは-vタグを指定してupまたはinstallコマンドを使用します。
インストール依存パッケージ
必要な依存関係をダウンロードする場合は、次のコマンドを実行します。
glide install
このコマンドは、次の2つのことを実行します。
(1)glide.lockファイルがすでに存在する場合、Glideはglide.lockで決定されたバージョン番号の依存パッケージをvendor /ディレクトリにバッチダウンロードします。
(2)glide.localファイルが存在しない場合は、最初に更新コマンドが実行されます。
依存関係を追加する
getコマンドを使用すると、Glideは次のようにglide.yamlファイルに依存関係を追加するのに役立ちます。
glide get github.com/Masterminds/semver
glidegetコマンド関数はgogetに似ていますが、依存関係をvendor /ディレクトリにダウンロードし、関連情報をglide.yamlファイルに構成します。
このgetコマンドには、次のようなバージョン番号を付けることもできます。
glide get github.com/Masterminds/semver#~1.2.0
「#」は、依存関係パッケージとバージョン番号の区切り文字です。これには、セマンティックバージョン、スコープバージョン、ブランチバージョン、ラベル、または送信されたバージョンIDを指定できます。
特定のバージョン番号または範囲のバージョン番号が指定されていない場合、Glideはセマンティックバージョン番号を使用して、必要なバージョン番号を確認するように求めます。
注意 :
glideは、ダウンロードしたパッケージを〜/ .glide / cacheディレクトリにキャッシュします。
バージョン番号の指定(バージョンフィールド)
Glideは、セマンティックバージョン、スコープバージョン、ブランチバージョン、ラベルバージョン、バージョンID、およびほとんどのバージョン番号をサポートしています。
基本範囲
簡単な例として、スコープバージョン> 1.2.3は、Glideが1.2.3以降の最新バージョンを使用することを意味します。現在、次の演算子がサポートされています。
- =:等しい(演算子なしにエイリアス)
- !=:等しくない
- >:より大きい
- <: less than
- > =:以上
- <=: less than or equal to
これらは、「論理積」、「||」の場合は「、」と組み合わせることもできます。 '> = 1.2、= 4.2.3'などの '論理OR'の場合
ハイフンの範囲
- 1.2-1.4.5これは> = 1.2に相当し、<= 1.4.5
- 2.3.4-4.5> = 2.3.4と同等、<= 4.5
ワイルドカードの比較
文字「x」、「X」、「*」はワイルドカードとして使用でき、すべての比較操作に適用できます。 '='演算子に適用すると、次のように、パッチの最低レベルの比較を表します。
- 1.2.xは> = 1.2.0と同等であり、<1.3.0
- > = 1.2.xは> = 1.2.0と同等です
- <= 2.x is equivalent to < 3
- *は> = 0.0.0と同等です
波線範囲比較(パッチ)
チルダ比較演算子は、主にパッチレベル範囲の比較に使用されます。マイナーバージョン番号が指定されていない場合、マイナーバージョンは変更されず、メジャーバージョンが変更されます。次のように:
- 〜1.2.3は> = 1.2.3と同等であり、<1.3.0
- 〜1は> = 1と同等です<2
- 〜2.3は> = 2.3と同等です。<2.4
- 〜1.2.xは> = 1.2.0と同等であり、<1.3.0
- 〜1.xは> = 1と同等です<2
文字解除範囲比較(メインバージョン)
キャレット比較演算子は、メインバージョン番号用に変更されています。通常、次のようにインターフェイスのメジャーバージョンの比較に使用されます。
- ^ 1.2.3は> = 1.2.3と同等であり、<2.0.0
- ^ 1.2.xは> = 1.2.0と同等であり、<2.0.0
- ^ 2.3は> = 2.3と同等です。<3
- ^ 2.xは> = 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: root@xxxxx homepage: http://technosophos.com - name: Matt Farina email: root@xxxxx 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: root@xxxxx: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
次の要素があります。
- パッケージ:最上位のパッケージインポートパス。これは、GOPATH / srcに関連するパッケージのインポートパスです。
- ホームページ:プロジェクトのホームページ(次のような) http://k8s.io 。
- ライセンス:プロジェクトの契約を使用する権利。
- 所有者:名前、連絡先情報(電子メール)、個人のホームページなど、プロジェクトの作成者情報。
- 無視:インポートされたパッケージ名のリストは無視する必要があります。フォルダ名ではないことに注意してください。
- excludeDirs:依存パッケージをスキャンするフォルダーのリストは無視する必要があります。
- インポート:インポートする必要のある依存関係。各依存関係パッケージには、次の要素が含まれています。
- パッケージ:パッケージパス情報。
- バージョン:セマンティックバージョン、スコープバージョン、ブランチバージョン、ラベルバージョン、コミット番号バージョンなどのバージョン番号。詳細については、ドキュメント:バージョン管理ドキュメントを参照してください。
- リポジトリ:パッケージの倉庫の住所情報。パッケージ名がパッケージリポジトリパス情報またはプライベートリポジトリでない場合は、オンラインウェアハウスチェックアウトファイルからパッケージ名で指定された(ローカル)パスへのfork命令を使用できます。
- Vcs:git、hg、bzr、svnなどの使用されているバージョン管理システム。上記のパッケージからバージョン管理システムの種類を判別できない場合は、ここで指定する必要があります。たとえば、.gitサフィックスが付いたリポジトリパスまたはGitHubリポジトリパスは、タイプをgitとして自動的に識別できます。
- サブパッケージ:現在のパッケージで使用されているサブパッケージ名のリスト。
- Os:どのオペレーティングシステムに適用できますか?ランタイム(ランタイム)でのオペレーティングシステム変数(GOOS)の一致と比較し、一致する場合はパッケージを取得します。
- Arch:どのような構造を使用できますか?ランタイム(ランタイム)のランタイムアーキテクチャ変数(GOARCH)と比較し、一致する場合はパッケージを取得します。
- testImport:テストに使用されるパッケージ。