2012-04-30 16 views
103

Guardando come crescono e migliorano i pacchetti golan mi chiedo come si risolve il problema con le versioni dei pacchetti?In che modo Go aggiorna i pacchetti di terze parti?

Vedo che un modo è quello di memorizzare pacchetti di terze parti in una cartella di progetto.

Ma cosa succede se lo installo con go get?

risposta

183

go get installerà il pacchetto nella prima directory elencata a GOPATH (una variabile di ambiente che potrebbe contenere un elenco di directory separate da due punti). È possibile utilizzare go get -u per aggiornare i pacchetti esistenti.

È inoltre possibile utilizzare go get -u all per aggiornare tutti i pacchetti in GOPATH

Per i progetti più grandi, potrebbe essere ragionevole per creare diversi GOPATHs per ogni progetto, in modo che l'aggiornamento di una libreria nel progetto A non causerà problemi nel progetto B

Digitare go help gopath per ulteriori informazioni sulla variabile di ambiente GOPATH.

+2

grazie! 'go get -u' è stata la cosa che ho pensato su – shalakhin

+2

è possibile aggiornare tutti i pacchetti alla versione più recente, un po 'come l'aggiornamento del bundle? – chourobin

+54

dovrebbe essere "vai get -u all' scusa per resuscitare, ma nel caso in cui qualcun altro stesse guardando. –

22

@tux risposta è grande, volevo solo aggiungere che è possibile utilizzare go get per aggiornare un pacchetto specifico:

go get -u full_package_name 
8

Poiché la questione menzionata di terze parti librerie e non tutto Pacchetti quindi probabilmente si vuole ricorrere all'utilizzo di caratteri jolly.

Un uso caso essere: voglio solo per aggiornare tutti i miei pacchetti che si ottengono dal Github VCS, allora si potrebbe semplicemente dire:

go get -u github.com/... // ('...' being the wildcard). 

Questo sarebbe andare avanti e aggiornare solo i pacchetti GitHub nel corrente $GOPATH

Lo stesso vale per all'interno di un VCS troppo, dire che si desidera aggiornare solo tutti i pacchetti da ogranizaiton di un pronti contro termine di dato, come hanno rilasciato un hotfix si dipende da:

go get -u github.com/orgA/... 
3

I answeres di cui sopra hanno i seguenti problemi:

  1. Aggiornano tutto, compreso la vostra applicazione (nel caso in cui si dispone di modifiche non).
  2. Hanno aggiornato i pacchetti che potreste aver già rimosso dal progetto ma che sono già sul vostro disco.

Per evitare questi, effettuare le seguenti operazioni:

  1. eliminare le cartelle 3rd party che si desidera aggiornare.
  2. andare alla cartella applicazione ed eseguire go get -d
0

Vai a percorso e digitare

go get -u ./.. 

Si aggiornerà tutti richiedono pacchetti.

Problemi correlati