Go üçüncü taraf paketlerini nasıl günceller?


189

Golang paketlerinin ne kadar aktif olarak büyüdüğünü ve geliştiğini mi arıyorsunuz Paket sürümleriyle ilgili sorunun nasıl çözüldüğünü merak ediyorum?

Bir yolun üçüncü taraf paketlerini bir proje klasörü altında saklamak olduğunu görüyorum.

Ama ne ile kurarsam go get?

Yanıtlar:


309

go getpaketi, listelenen ilk dizine GOPATH(iki nokta üst üste ayrılmış dizin listesi içerebilecek bir ortam değişkeni) yükler . go get -uMevcut paketleri güncellemek için kullanabilirsiniz .

Cihazınızdaki go get -u alltüm paketleri güncellemek için de kullanabilirsiniz .GOPATH

Daha büyük projeler için, her proje için farklı GOPATH'lar oluşturmak mantıklı olabilir, böylece A projesindeki bir kütüphanenin güncellenmesi B projesinde sorunlara neden olmaz.

Tip go help gopathhakkında daha fazla bilgi edinmek için GOPATHortam değişkeni.


2
tüm paketleri en son sürüme güncellemek mümkün müdür?
chourobin

73
Sadece olması gerektiği go get -u all diriltmek için üzgünüz, ama sadece başka durumda herkes arıyordu.
Dan Anderson

go get -u allArtık çalışmıyor! Bu komutu GOPATH'da, en azından Go 1.13 için çalıştırmak, bir uyarı döndürür: "uyarı" tüm "eşleşen paket yok"
Contrapak

Go ile çalışır 1.12.9
fviktor

61

@tux cevap harika, sadece belirli bir paketi güncellemek için go get'i kullanabileceğinizi eklemek istedim :

go get -u full_package_name

18

Soru, tüm paketlerden değil, üçüncü taraf kütüphanelerinden bahsettiğinden, muhtemelen joker karakterler kullanmaya geri dönmek istersiniz.

Bir kullanım örneği: Github VCS'den alınan tüm paketlerimi güncellemek istiyorum, o zaman sadece şunu söylerdiniz:

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

Bu devam eder ve yalnızca mevcut github paketlerinizi günceller $GOPATH

Aynı şey bir VCS için de geçerlidir, tüm paketleri sadece ogranizaiton A'nın repo'sundan yükseltmek istediğinizi varsayalım, çünkü bağlı olduğunuz bir düzeltmeyi yayınladıkları için:

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

11

Yukarıdaki yanıtların aşağıdaki sorunları vardır:

  1. Uygulamanız dahil her şeyi günceller (taahhüt edilmemiş değişiklikleriniz varsa).
  2. Projenizden daha önce kaldırmış olabileceğiniz, ancak zaten diskinizde bulunan paketleri güncellediler.

Bunlardan kaçınmak için aşağıdakileri yapın:

  1. Güncellemek istediğiniz 3. taraf klasörlerini silin.
  2. uygulama klasörünüze gidin ve çalıştırın go get -d

2

1.13 git

(modül kök dizininden exec)

Belirtilen bağımlılıkları güncelleme:

go get -u <package-name>

Tüm doğrudan ve dolaylı bağımlılıkları en son küçük veya yama güncellemelerine güncelleyin (ön sürümler yok sayılır):

go get -u ./...
# or
go get -u=patch ./...

Referans:

https://github.com/golang/go/wiki/Modules#daily-workflow

go help get



-2

Yola gidin ve yazın

go get -u ./..

Tüm gerekli paketleri güncelleyecektir.


Bu gerçek yorum işe yaramıyor. Biraz daha bağlam yardımcı olacaktır.
Contrapak

2
Ben demek istediğine inanıyorum go get -u ./...(3 nokta)
Brian Leishman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.