go getinstalliert das Paket in dem ersten Verzeichnis, das unter aufgeführt ist GOPATH(eine Umgebungsvariable, die möglicherweise eine durch Doppelpunkte getrennte Liste von Verzeichnissen enthält). Sie können go get -uvorhandene Pakete aktualisieren.
Sie können auch go get -u allalle Pakete in Ihrem aktualisierenGOPATH
Bei größeren Projekten kann es sinnvoll sein, für jedes Projekt unterschiedliche GOPATHs zu erstellen, damit das Aktualisieren einer Bibliothek in Projekt A keine Probleme in Projekt B verursacht.
Geben Sie ein go help gopath, um mehr über die GOPATHUmgebungsvariable zu erfahren .
Ist es möglich, alle Pakete auf die neueste Version zu aktualisieren, ähnlich wie bei einem Bundle-Update?
Chourobin
73
Es sollte nur go get -u all leid tun, wieder auferstehen zu müssen, aber nur für den Fall, dass jemand anderes hinschaut.
Dan Anderson
go get -u allfunktioniert nicht mehr! Wenn Sie diesen Befehl im GOPATH ausführen, zumindest für Go 1.13, wird eine Warnung zurückgegeben: "Warnung" Alle "stimmten mit keinen Paketen überein"
Contrapak
Funktioniert mit Go 1.12.9
fviktor
61
@tux Antwort ist großartig, wollte nur hinzufügen, dass Sie go get verwenden können , um ein bestimmtes Paket zu aktualisieren:
Da in der Frage Bibliotheken von Drittanbietern und nicht alle Pakete erwähnt wurden, möchten Sie wahrscheinlich auf die Verwendung von Platzhaltern zurückgreifen.
Ein Anwendungsfall ist: Ich möchte nur alle meine Pakete aktualisieren, die vom Github VCS bezogen werden. Dann würden Sie einfach sagen:
go get-u github.com/...// ('...' being the wildcard).
Dies würde fortfahren und nur Ihre Github-Pakete in der aktuellen aktualisieren $GOPATH
Gleiches gilt auch für ein VCS. Angenommen, Sie möchten nur alle Pakete von den Repos von ogranizaiton A aktualisieren, da sie einen Hotfix veröffentlicht haben, von dem Sie abhängig sind:
go get -u all
leid tun, wieder auferstehen zu müssen, aber nur für den Fall, dass jemand anderes hinschaut.go get -u all
funktioniert nicht mehr! Wenn Sie diesen Befehl im GOPATH ausführen, zumindest für Go 1.13, wird eine Warnung zurückgegeben: "Warnung" Alle "stimmten mit keinen Paketen überein"@tux Antwort ist großartig, wollte nur hinzufügen, dass Sie go get verwenden können , um ein bestimmtes Paket zu aktualisieren:
quelle
Da in der Frage Bibliotheken von Drittanbietern und nicht alle Pakete erwähnt wurden, möchten Sie wahrscheinlich auf die Verwendung von Platzhaltern zurückgreifen.
Ein Anwendungsfall ist: Ich möchte nur alle meine Pakete aktualisieren, die vom Github VCS bezogen werden. Dann würden Sie einfach sagen:
Dies würde fortfahren und nur Ihre Github-Pakete in der aktuellen aktualisieren
$GOPATH
Gleiches gilt auch für ein VCS. Angenommen, Sie möchten nur alle Pakete von den Repos von ogranizaiton A aktualisieren, da sie einen Hotfix veröffentlicht haben, von dem Sie abhängig sind:
quelle
Die obigen Antworten haben die folgenden Probleme:
Um dies zu vermeiden, gehen Sie wie folgt vor:
go get -d
quelle
gehe 1.13
(Exec aus dem Modulstammverzeichnis)
Aktualisieren Sie die angegebenen Abhängigkeiten:
Aktualisieren Sie alle direkten und indirekten Abhängigkeiten auf die neuesten kleineren oder Patch-Upgrades (Vorabversionen werden ignoriert):
Referenz:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get
quelle
So geben Sie Versionen oder Commits an:
Siehe https://github.com/golang/go/wiki/Modules#daily-workflow
quelle
Gehen Sie zum Pfad und geben Sie ein
Alle erforderlichen Pakete werden aktualisiert.
quelle
go get -u ./...
(3 Punkte)