J'utilise golang 1.13.
J'ai un projet qui dépend d'un projet gitlab privé.
J'ai les clés ssh pour la même chose.
Lorsque j'essaie de récupérer les dépendances pour un module nouvellement créé, j'obtiens l'erreur suivante:
$ go version
go version go1.13 linux/AMD64
$ go mod why
go: downloading gitlab.com/mycompany/myproject v0.0.145
verifying gitlab.com/mycompany/[email protected]: gitlab.com/mycompany/[email protected]: reading https://sum.golang.org/lookup/gitlab.com/mycompany/[email protected]: 410 Gone
Je n'ai aucune idée pourquoi il essaie d'envoyer une requête ping à sum.golang.org/lookup car il s'agit d'un projet gitlab privé.
Mon ~/.gitconfig contient les éléments suivants (sur la base de ma recherche dans la recherche Google pour des erreurs similaires)
# Enforce SSH
[url "ssh://[email protected]/"]
insteadOf = https://github.com/
[url "ssh://[email protected]/"]
insteadOf = https://gitlab.com/
[url "ssh://[email protected]/"]
insteadOf = https://bitbucket.org/
[url "[email protected]:"]
insteadOf = https://gitlab.com/
L'erreur persiste toujours.
Je m'attendrais à ce que le paquet soit téléchargé depuis mon dépôt de projet gitlab privé vers le projet en cours.
Y a-t-il quelque chose que je dois faire dans mon référentiel de projet gitlab privé pour le rendre prêt à "aller chercher"?
Le référentiel de projet gitlab privé contient déjà le go.sum et le go.mod du projet.
Quelque chose qui me manque?
modifier: 1) Le nom du référentiel privé et le nom de l'entreprise ne contiennent aucun astérisque ni aucun autre caractère spécial. seulement des alphabets et même pas des caractères numériques.
Auriez-vous une chance d'avoir un fichier dans votre dépôt privé avec un astérisque à son nom?
Fondamentalement, il n'a pas pu vérifier le référentiel privé. Cependant, je n'aime pas désactiver la somme de contrôle, mais vous pouvez facilement définir GOSUMDB
sur off
avant d'essayer d'obtenir le module. quelque chose comme ça:
GOSUMDB=off go get github.com/mycompany/myproject
ref: https: //github.com/golang/go/issues/35164#issuecomment-546503518
Une deuxième et meilleure solution consiste à définir la variable d'environnement GOPRIVATE
qui contrôle les modules que la commande go considère comme privés (non disponibles publiquement) et ne doit donc PAS utiliser la base de données proxy ou checksum. La variable est une liste de modèles glob séparés par des virgules (même syntaxe que Go path.Match
) De préfixes de chemin de module. Par exemple,
export GOPRIVATE=*.corp.example.com,rsc.io/private
Ou
go env -w GOPRIVATE=github.com/mycompany/*
La dernière solution que vous pouvez essayer est de désactiver ces vérifications pour tous les référentiels privés que vous ne souhaitez pas rendre publics ou vérifiés via sum.golang.org/lookup/github.com/mycompany/...
GONOSUMDB=gitlab.com/mycompany/* go mod why
Notez que:
Si vous rencontrez des problèmes lors de la récupération de modules ou de référentiels via https, vous souhaiterez peut-être ajouter ce qui suit à votre ~/.gitconfig
Pour créer go
obtenir/récupérer des référentiels en utilisant ssh
au lieu de https
[url "ssh: //[email protected]/"] au lieu de = https: //github.com/