Maison  >  Article  >  développement back-end  >  Pourquoi va-t-on télécharger deux versions du même package lors de l'utilisation de -u

Pourquoi va-t-on télécharger deux versions du même package lors de l'utilisation de -u

WBOY
WBOYavant
2024-02-12 22:00:11633parcourir

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

L'éditeur de php explique pourquoi deux versions du même package sont téléchargées lors de l'utilisation de la commande "go get -u". La raison de ce problème réside dans le fonctionnement du mod go. go mod est un outil de gestion des dépendances introduit par le langage Go dans la version 1.11. Il téléchargera et gérera automatiquement les packages de dépendances basés sur le fichier go.mod du projet. Lorsque nous utilisons la commande "go get -u", elle vérifie la version du package de dépendances dans le fichier go.mod et essaie de télécharger la dernière version. Cependant, les mises à jour de version de certains packages peuvent dépendre de différentes versions d'autres packages, donc go mod téléchargera deux versions du package pour satisfaire la dépendance, c'est pourquoi deux versions du même package seront téléchargées.

Contenu des questions

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

Puis je cours 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]

Alors, pourquoi go get -u télécharge à la fois l'ancienne version et la dernière version lorsque la dernière version n'est pas disponible localement, et pourquoi ne télécharge-t-il pas l'ancienne version lorsque la dernière version est disponible localement ?

Solution

Parce que c'est un processus en deux étapes

  1. Obtenir les dépendances
  2. Mettre à jour les dépendances

Du point de vue de la programmation, il n'y a aucune bonne raison de les fusionner en un seul objectif consistant à "obtenir les dernières dépendances".

De la documentation de la commande go :

L'indicateur

-u indique à get de mettre à jour les modules qui fournissent des dépendances pour le package nommé sur la ligne de commande afin d'utiliser des versions mineures ou des correctifs plus récents lorsqu'ils sont disponibles.

Cela signifie -u gérer spécifiquement les modules dont dépend le package que vous récupérez, et non le module du package que vous récupérez.

De plus, il semble que -u 与将 v0 版本中的任何更改视为主要版本更改的 Go 惯用法无关,因此不能出于原则轻易推荐使用 -u n'a rien à voir avec l'idiome Go consistant à traiter tout changement dans la version v0 comme un changement de version majeur, donc l'utilisation de ne peut pas être facilement recommandée par principe. Le readme de golang.org/x/test

dit même :

Les versions mineures sont considérées comme majeures jusqu'à ce que la version x/text atteigne la version 1.0.0. Par conséquent, passer de 0.1.0 à 0.2.0 est considéré comme une mise à niveau majeure de la version. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer