Wie importiere ich eine bestimmte Version eines Pakets mit go get?
kommen aus einer Node
Umgebung, die ich verwendet, um zu installieren eine bestimmte version eines Lieferanten lib in den Projekt-Ordner ( node_modules
), indem Sie sagen npm
zu installieren, dass die version der lib aus der package.json
oder sogar direkt von der Konsole aus, etwa so:
$ npm install express@4.0.0
Dann ich verwendet, um zu importieren, die version des Pakets in meinem Projekt nur mit:
var express = require('express');
Nun, ich möchte das gleiche zu tun, mit go
. Wie kann ich das tun?
Ist es möglich, eine bestimmte version eines Pakets? Wenn ja, über eine zentrale $GOPATH
, wie kann ich die import-version anstelle der anderen?
Ich würde so etwas tun:
$ go get github.com/wilk/uuid@0.0.1
$ go get github.com/wilk/uuid@0.0.2
Aber dann, wie kann ich einen Unterschied machen, während der import?
InformationsquelleAutor der Frage Wilk | 2014-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die set-version, die von offiziellen Datenausführungsverhinderung
InformationsquelleAutor der Antwort vitams
Wirklich überrascht, niemand hat erwähnt gopkg.in.
gopkg.in ist ein service, der bietet eine wrapper - (umleiten) können Sie die express-Versionen als repo-urls, ohne tatsächlich die Schaffung repos. zB gopkg.in/yaml.v1 vs gopkg.in/yaml.v2, obwohl Sie beide Leben bei https://github.com/go-yaml/yaml
Dies ist nicht perfekt, wenn der Autor folgt nicht die korrekte Versionierung Praktiken (durch Inkrementierung der Versionsnummer beim brechen der Abwärtskompatibilität), aber es macht die Arbeit mit branches und tags.
InformationsquelleAutor der Antwort Steven Soroka
Können Sie
git checkout
um eine spezifische version und die build-Programm mit dieser version.Beispiel:
InformationsquelleAutor der Antwort João Paraná
Glide ist eine wirklich elegante Paketverwaltung für Gehen, vor allem, wenn Sie kommen aus Knoten npm oder Rost cargo.
Verhält es sich eng an Godep neue vendor feature in 1.6, aber ist viel leichter. Ihre Abhängigkeiten und Versionen sind "gesperrt" in Ihrem Projektordner/vendor-Verzeichnis, ohne sich auf GOPATH.
Installieren mit brew (OS X)
Init glide.yaml-Datei (ähnlich Paket.json). Dieser schnappt sich auch den vorhandenen importierten Pakete in Ihr Projekt aus GOPATH und kopieren Sie dann die Projekt vendor/- Verzeichnis.
Neue Pakete
Update und sperren Sie die Pakete " - Versionen. Dies schafft glide.lock-Datei in Ihrem Projekt-Verzeichnis zum sperren der Versionen.
Versuchte ich glide und glücklich benutze es für mein Aktuelles Projekt.
InformationsquelleAutor der Antwort Pie 'Oh' Pah
Holen wird die Paket-manager. Es funktioniert völlig dezentral und, wie Paket Entdeckung noch möglich, ohne eine zentrale hosting-Paket-repository.
Neben Auffinden und herunterladen von Paketen, die andere große Rolle der Paket-manager ist der Umgang mit mehreren Versionen des gleichen Pakets. Gehen nimmt die minimale und pragmatischen Ansatz von jedem der Paket-manager. Es gibt keine solche Sache wie mehrere Versionen von einem Paket.
Holen zieht immer aus dem KOPF des default-branch im repository. Immer. Dies hat zwei wichtige Implikationen:
Als Paket Autor, müssen Sie sich an die stabile KOPF-Philosophie. Ihre default-Zweig muss immer die stabile, freigegebene version des Pakets. Sie müssen die Arbeit in feature-branches und nur dann Zusammenführen, wenn Sie bereit sind, Sie zu entlassen.
Neue major-Versionen des Pakets müssen Ihre eigenen repository. Einfach ausgedrückt, jeder major-version Ihres Paketes (folgende semantische Versionierung) hätte sein eigenes repository und damit seine eigene import-Pfad.
z.B. github.com/jpoehls/gophermail-v1 und github.com/jpoehls/gophermail-v2.
Als jemand erstellen einer Anwendung in der Go, die über Philosophie nicht wirklich einen Nachteil. Jeder import-Pfad ist eine stabile API. Es gibt keine Versionsnummern zu befürchten. Genial!
Weitere details : http://zduck.com/2014/go-and-package-versioning/
InformationsquelleAutor der Antwort faisal_kk
Vom Go 1.5 gibt es die "vendor-experiment"die Ihnen hilft, die Verwaltung von Abhängigkeiten. Wie Gehen 1.6 dieser ist nicht mehr ein experiment. Es gibt auch einige andere Optionen auf der Go-wiki..
Edit: wie bereits in diese Antwort gopkg.in ist eine gute option für das anheften von github-depdencies pre-1.5.
InformationsquelleAutor der Antwort larsmoa
dep
ist die offizielle experiment für dependency management für Go Sprache. Es erfordert Go 1.8 oder höher zu kompilieren.Starten, verwalten von Abhängigkeiten mit
dep
führen Sie den folgenden Befehl aus dem Projekt-root-Verzeichnis:Nach Ausführung zwei Dateien werden generiert:
Gopkg.toml
("manifest"),Gopkg.lock
und die benötigten Pakete werden heruntergeladen, invendor
- Verzeichnis.Nehmen wir an, Sie haben das Projekt, die verwendet
github.com/gorilla/websocket
Paket.dep
generiert folgende Dateien:Gopkg.toml
Gopkg.lock
Gibt es Befehle, die Ihnen helfen, zu aktualisieren/löschen/etc Pakete, bitte finden Sie mehr info auf offiziellen github-repo von
dep
(dependency-management-tool für Gehen).InformationsquelleAutor der Antwort Aliaksei Maniuk
Den Ansatz habe ich schon gefunden, die praktikabel ist git - submodule system. Mit diesem können Sie Submodul in einer bestimmten version des Codes und der Upgrade/Downgrade ist explizit und dokumentiert - nie planlos.
Die Ordner-Struktur, die ich genommen habe:
InformationsquelleAutor der Antwort jpj
Gehen 1.11 wird mit einer Funktion namens go-Module und Sie können einfach fügen Sie eine Abhängigkeit mit einer version.
Schritte
go mod init .
go mod edit -require github.com/wilk/[email protected]
InformationsquelleAutor der Antwort krish