En regardant comment les packages golang se développent et s'améliorent activement, je me demande comment le problème avec les versions de packages est résolu?
Je vois que l'un des moyens consiste à stocker des packages tiers dans un dossier de projet.
go getinstallera le package dans le premier répertoire répertorié dans GOPATH(une variable d'environnement qui peut contenir une liste de répertoires séparés par deux-points). Vous pouvez utiliser go get -upour mettre à jour les packages existants.
Vous pouvez également utiliser go get -u allpour mettre à jour tous les packages de votreGOPATH
Pour les projets plus importants, il peut être raisonnable de créer différents GOPATH pour chaque projet, de sorte que la mise à jour d'une bibliothèque dans le projet A ne causera pas de problèmes dans le projet B.
Tapez go help gopathpour en savoir plus sur la GOPATHvariable d'environnement.
est-il possible de mettre à jour tous les packages vers la dernière version, un peu comme une mise à jour de bundle?
chourobin
73
devrait juste être go get -u all désolé de ressusciter, mais juste au cas où quelqu'un d'autre regarderait.
Dan Anderson
go get -u allne fonctionne plus! L'exécution de cette commande dans le GOPATH, au moins pour Go 1.13, renverra un avertissement: `warning" all "matched no packages"
Contrapak
Fonctionne avec Go 1.12.9
fviktor
61
La réponse @tux est géniale, je voulais juste ajouter que vous pouvez utiliser go get pour mettre à jour un package spécifique:
Étant donné que la question mentionnait les bibliothèques tierces et non tous les packages, vous souhaiterez probablement revenir à l'utilisation de caractères génériques.
Un cas d'utilisation étant: je veux juste mettre à jour tous mes packages obtenus à partir du Github VCS, alors vous diriez simplement:
go get-u github.com/...// ('...' being the wildcard).
Cela irait de l'avant et ne mettrait à jour que vos packages github dans le $GOPATH
Il en va de même pour un VCS, disons que vous souhaitez uniquement mettre à niveau tous les packages des repo d'ogranizaiton A car ils ont publié un correctif dont vous dépendez:
Mettez à jour toutes les dépendances directes et indirectes vers les dernières mises à niveau mineures ou correctives (les pré-versions sont ignorées):
go get -u all
désolé de ressusciter, mais juste au cas où quelqu'un d'autre regarderait.go get -u all
ne fonctionne plus! L'exécution de cette commande dans le GOPATH, au moins pour Go 1.13, renverra un avertissement: `warning" all "matched no packages"La réponse @tux est géniale, je voulais juste ajouter que vous pouvez utiliser go get pour mettre à jour un package spécifique:
la source
Étant donné que la question mentionnait les bibliothèques tierces et non tous les packages, vous souhaiterez probablement revenir à l'utilisation de caractères génériques.
Un cas d'utilisation étant: je veux juste mettre à jour tous mes packages obtenus à partir du Github VCS, alors vous diriez simplement:
Cela irait de l'avant et ne mettrait à jour que vos packages github dans le
$GOPATH
Il en va de même pour un VCS, disons que vous souhaitez uniquement mettre à niveau tous les packages des repo d'ogranizaiton A car ils ont publié un correctif dont vous dépendez:
la source
Les réponses ci-dessus présentent les problèmes suivants:
Pour éviter cela, procédez comme suit:
go get -d
la source
aller 1.13
(exec du répertoire racine du module)
Mettre à jour les dépendances spécifiées:
Mettez à jour toutes les dépendances directes et indirectes vers les dernières mises à niveau mineures ou correctives (les pré-versions sont ignorées):
Référence:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get
la source
Pour spécifier des versions ou des validations:
Voir https://github.com/golang/go/wiki/Modules#daily-workflow
la source
Aller au chemin et tapez
Il mettra à jour tous les packages requis.
la source
go get -u ./...
(3 points)