Bagaimana Go memperbarui paket pihak ketiga?


190

Melihat seberapa aktif paket-paket golang tumbuh dan meningkat, saya bertanya-tanya bagaimana masalah dengan versi-versi paket diselesaikan?

Saya melihat bahwa salah satu caranya adalah dengan menyimpan paket pihak ketiga di bawah folder proyek.

Tetapi bagaimana jika saya menginstalnya go get?

Jawaban:


311

go getakan menginstal paket di direktori pertama yang terdaftar di GOPATH(variabel lingkungan yang mungkin berisi daftar direktori yang dipisahkan oleh titik dua). Anda dapat menggunakan go get -uuntuk memperbarui paket yang ada.

Anda juga dapat menggunakan go get -u alluntuk memperbarui semua paket diGOPATH

Untuk proyek yang lebih besar, mungkin masuk akal untuk membuat GOPATH yang berbeda untuk setiap proyek, sehingga memperbarui perpustakaan di proyek A tidak akan menyebabkan masalah dalam proyek B.

Ketik go help gopathuntuk mencari tahu lebih lanjut tentang GOPATHvariabel lingkungan.


2
apakah mungkin untuk memperbarui semua paket ke versi terbaru, semacam pembaruan bundel seperti?
chourobin

73
seharusnya hanya go get -u all menyesal untuk bangkit, tapi kalau-kalau ada orang lain yang melihat.
Dan Anderson

go get -u alltidak lagi berfungsi! Menjalankan perintah ini di GOPATH, setidaknya untuk Go 1.13, akan memberikan peringatan: `peringatan" semua "tidak cocok dengan paket"
Contrapak

Bekerja dengan Go 1.12.9
fviktor

61

@tux answer is great, hanya ingin menambahkan bahwa Anda dapat menggunakan pergi untuk memperbarui paket tertentu:

go get -u full_package_name

18

Karena pertanyaan tersebut menyebutkan pustaka pihak ketiga dan tidak semua paket maka Anda mungkin ingin kembali menggunakan wildcard.

Kasus penggunaan adalah: Saya hanya ingin memperbarui semua paket saya yang diperoleh dari Github VCS, maka Anda hanya akan mengatakan:

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

Ini akan berlanjut dan hanya memperbarui paket github Anda saat ini $GOPATH

Hal yang sama berlaku untuk dalam VCS juga, katakan Anda hanya ingin memutakhirkan semua paket dari repo ogranizaiton A karena karena mereka telah merilis perbaikan terbaru yang Anda andalkan:

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

11

Jawaban di atas memiliki masalah berikut:

  1. Mereka memperbarui semuanya termasuk aplikasi Anda (jika Anda memiliki perubahan yang tidak dikomit).
  2. Mereka memperbarui paket yang mungkin sudah Anda hapus dari proyek Anda tetapi sudah ada di disk Anda.

Untuk menghindari ini, lakukan hal berikut:

  1. Hapus folder pihak ke-3 yang ingin Anda perbarui.
  2. buka folder aplikasi Anda dan jalankan go get -d

2

lanjutkan 1.13

(exec dari direktori root modul)

Perbarui dependensi yang ditentukan:

go get -u <package-name>

Perbarui semua dependensi langsung dan tidak langsung ke peningkatan minor atau patch terbaru (pra-rilis diabaikan):

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

Referensi:

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

go help get



-2

Pergi ke jalur dan ketik

go get -u ./..

Ini akan memperbarui semua paket yang dibutuhkan.


Penafsiran literal ini tidak berhasil. Lebih banyak konteks akan membantu.
Contrapak

2
Saya percaya maksudnya go get -u ./...(3 titik)
Brian Leishman
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.