Golangパッケージ管理ツールのグライドチュートリアル



Golang Package Management Tool Glide Tutorial



元の住所: http://www.cnblogs.com/52php/p/6489605.html
侵入

GlideはGolangのベンダーパッケージマネージャーであり、ベンダーパッケージとベンダーパッケージを管理できます。 JavaのようなMaven、PHPのComposer。



主な特徴:

  • 単純な管理依存
  • 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:テストに使用されるパッケージ。