Rumah >pembangunan bahagian belakang >Golang >Mengapa pergi mendapatkan muat turun dua versi pakej yang sama apabila menggunakan -u

Mengapa pergi mendapatkan muat turun dua versi pakej yang sama apabila menggunakan -u

WBOY
WBOYke hadapan
2024-02-12 22:00:11660semak imbas

为什么 go get 在使用 -u 时会下载同一包的两个版本

Editor php menerangkan sebab dua versi pakej yang sama dimuat turun apabila menggunakan arahan "go get -u". Sebab masalah ini terletak pada cara mod go berfungsi. go mod ialah alat pengurusan pergantungan yang diperkenalkan oleh bahasa Go dalam versi 1.11 Ia akan memuat turun dan mengurus pakej pergantungan secara automatik berdasarkan fail go.mod projek. Apabila kami menggunakan arahan "go get -u", ia menyemak versi pakej kebergantungan dalam fail go.mod dan cuba memuat turun versi terkini. Walau bagaimanapun, kemas kini versi sesetengah pakej mungkin bergantung pada versi pakej lain yang berbeza, jadi go mod akan memuat turun dua versi pakej untuk memenuhi pergantungan, itulah sebabnya dua versi pakej yang sama akan dimuat turun.

Isi soalan

Saya guna go get -u 来获取依赖于 golang.org/x/[email protected] 的软件包。我注意到它首先下载 golang.org/x/[email protected] 然后下载 golang.org/x/[email protected].

Kemudian saya berlari go clean -modcachego get golang.org/x/text ,它下载了 golang.org/x/textv0.4.0 ,然后再次 go get -u entgo.io/ent 。这次 go 没有下载 golang.org/x/[email protected]

Jadi, mengapa go get -u memuat turun kedua-dua versi lama dan versi terkini apabila versi terbaharu tidak tersedia secara tempatan, dan mengapa ia tidak memuat turun versi lama apabila versi terkini tersedia secara tempatan?

Penyelesaian

Kerana ia adalah proses dua langkah

  1. Dapatkan tanggungan
  2. Kemas kini kebergantungan

Dari perspektif pengaturcaraan, tidak ada sebab yang kukuh untuk menggabungkan ini menjadi satu fokus "mendapatkan kebergantungan terkini".

Daripada dokumentasi arahan go:

Bendera

-u mengarahkan untuk mengemas kini modul yang menyediakan kebergantungan untuk pakej yang dinamakan pada baris arahan untuk menggunakan versi minor atau tampalan yang lebih baharu apabila tersedia.

Ini bermakna -u mengendalikan secara khusus modul yang bergantung pada pakej yang anda ambil, bukan modul pakej yang anda ambil.

Tambahan pula, nampaknya -u 与将 v0 版本中的任何更改视为主要版本更改的 Go 惯用法无关,因此不能出于原则轻易推荐使用 -u tiada kaitan dengan simpulan bahasa Go untuk menganggap sebarang perubahan dalam versi v0 sebagai perubahan versi utama, jadi menggunakan tidak boleh disyorkan dengan mudah di luar prinsip. Readme untuk golang.org/x/test

malah berkata:

Versi minor dianggap utama sehingga versi x/teks mencapai 1.0.0. Oleh itu, daripada 0.1.0 kepada 0.2.0 dianggap sebagai peningkatan versi utama. 🎜

Atas ialah kandungan terperinci Mengapa pergi mendapatkan muat turun dua versi pakej yang sama apabila menggunakan -u. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam