Julia: LibGit2 ne peut pas cloner ou récupérer sur Julia 1.3 / master

Créé le 29 août 2019  ·  66Commentaires  ·  Source: JuliaLang/julia

Ouvrir ce problème ici car je suis presque sûr que Pkg n'a rien changé, peut-être est-ce lié à la mise à jour de libgit2 (# 32806)?

$ julia13 -e 'using Pkg; Pkg.Registry.update()'
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
┌ Warning: Some registries failed to update:
│     — /home/fredrik/.julia/registries/General — failed to fetch from repo
└ @ Pkg.Types ~/julia13/usr/share/julia/stdlib/v1.3/Pkg/src/Types.jl:1189

$ julia12 -e 'using Pkg; Pkg.Registry.update()'
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
bug external dependencies upstream

Commentaire le plus utile

@getzze Comment Julia ? Peut-être avez-vous oublié de export la variable d'environnement JULIA_PKG_SERVER dans votre shell avant d'appeler Julia dans une invite de shell séparée?

La solution de contournement fonctionne sur _Arch Linux_ en utilisant _Julia_ 1.4.0:

[tamer<strong i="10">@zinc</strong> ~]$ pacman -Q libgit2 julia
libgit2 1:0.99.0-2
julia 2:1.4.0-1

[tamer<strong i="11">@zinc</strong> ~]$ rm -r ~/.julia/registries/General/
[tamer<strong i="14">@zinc</strong> ~]$ julia -e 'using Pkg; Pkg.update()'
    Cloning default registries into `~/.julia`
    Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, update_registry::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:206
 [2] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:201 [inlined]
 [3] #up#47 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [4] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [5] #up#44 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193 [inlined]
 [6] up() at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193
 [7] top-level scope at none:1
caused by [exception 1]
GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, update_registry::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:206
 [2] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:201 [inlined]
 [3] #up#47 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [4] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [5] #up#44 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193 [inlined]
 [6] up() at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193
 [7] top-level scope at none:1
[tamer<strong i="17">@zinc</strong> ~]$ JULIA_PKG_SERVER=pkg.julialang.org julia -e 'using Pkg; Pkg.update()'
    Cloning default registries into `~/.julia`
######################################################################## 100.0%
      Added registry `General` to `~/.julia/registries/General`
   Updating registry at `~/.julia/registries/General`
   Updating `~/.julia/environments/v1.4/Project.toml`
 [no changes]
   Updating `~/.julia/environments/v1.4/Manifest.toml`
 [no changes]

Tous les 66 commentaires

Fonctionne pour moi sur un mac.

Ok, je suis sous Linux. Le retour au # 32806 résout ce problème pour moi.

Reproducteur sans code Pkg:

julia> import LibGit2

julia> repo = LibGit2.GitRepo("/home/fredrik/.julia/registries/General");

julia> remoteurl = "https://github.com/JuliaRegistries/General.git";

julia> LibGit2.fetch(repo; remoteurl=remoteurl)
ERROR: GitError(Code:ERROR, Class:Net, unrecognized URL prefix)
Stacktrace:
 [1] #fetch#62(::LibGit2.FetchOptions, ::String, ::typeof(LibGit2.fetch), ::LibGit2.GitRemote, ::Array{AbstractString,1}) at /home/fredrik/julia-master/usr/share/julia/stdlib/v1.4/LibGit2/src/error.jl:101
 [2] #fetch at /home/fredrik/julia-master/usr/share/julia/stdlib/v1.4/LibGit2/src/remote.jl:297 [inlined]
 [3] #fetch#115(::String, ::String, ::Array{AbstractString,1}, ::Nothing, ::Dict{Symbol,Tuple{Ptr{Nothing},Any}}, ::typeof(LibGit2.fetch), ::LibGit2.GitRepo) at /home/fredrik/julia-master/usr/share/julia/stdlib/v1.4/LibGit2/src/LibGit2.jl:290
 [4] (::LibGit2.var"#kw##fetch")(::NamedTuple{(:remoteurl,),Tuple{String}}, ::typeof(LibGit2.fetch), ::LibGit2.GitRepo) at /home/fredrik/julia-master/usr/share/julia/stdlib/v1.4/LibGit2/src/LibGit2.jl:272
 [5] top-level scope at REPL[4]:1

Peut-être sans rapport: j'ai vu la même erreur sur Julia 1.0.4 aujourd'hui sur macOS. Je l'ai corrigé en accédant au registre de mon terminal et en exécutant git fetch . Après cela, les mises à jour de Pkg ont cessé de produire l'avertissement.

Peut-être sans rapport: j'ai vu la même erreur sur Julia 1.0.4 aujourd'hui sur macOS. Je l'ai corrigé en accédant au registre de mon terminal et en exécutant git fetch. Après cela, les mises à jour de Pkg ont cessé de produire l'avertissement.

Cela ne m'a pas arrangé. De plus, j'ai essayé à partir d'une machine différente mais je n'ai pas pu reproduire. Des idées sur la façon de déboguer?

Le clonage à partir de zéro échoue également, avec le même message d'erreur à propos de unrecognized URL prefix .

Cela se produit également avec les binaires génériques btw.

Une manière future possible de déboguer ceci est de le réduire à juste des appels, puis de regarder dans libgit2 où l'erreur est générée.

import LibGit2

const repo_url = "https://github.com/JuliaRegistries/General.git"
const repo_path = "/tmp/General"
const credentials = nothing
const callbacks = LibGit2.Callbacks()
const cred_payload = LibGit2.reset!(LibGit2.CredentialPayload(credentials))
callbacks[:credentials] = (LibGit2.credentials_cb(), cred_payload)
const lbranch = Base.cconvert(Cstring, "")
const remote_callbacks = LibGit2.RemoteCallbacks(callbacks)
const fetch_opts = LibGit2.FetchOptions(callbacks=remote_callbacks)
const clone_opts = LibGit2.CloneOptions(
            bare = Cint(false),
            checkout_branch = Cstring(C_NULL),
            fetch_opts = fetch_opts,
            remote_cb = C_NULL
        )
LibGit2.ensure_initialized()
const clone_opts_ref = Ref(clone_opts)
const repo_ptr_ptr = Ref{Ptr{Cvoid}}(C_NULL)

ccall((:git_clone, :libgit2), Cint,
            (Ptr{Ptr{Cvoid}}, Cstring, Cstring, Ref{LibGit2.CloneOptions}),
            repo_ptr_ptr, repo_url, repo_path, clone_opts_ref)

renvoie -1 .

FWIW les deux exemples fonctionnent ici sur le dernier maître. Quelqu'un d'autre peut-il reproduire?

@fredrikekre pouvez-vous poster votre configuration git?

Intéressant, j'ai réduit le fichier .gitconfig à

[http]
    proxy =

Je ne sais pas pourquoi il est là, je ne pense pas l'avoir ajouté moi-même. On dirait que [email protected] échoue pour cela, alors que [email protected] le gère (comme le fait git normal)

Peut-être lié à ce point des notes de publication de libgit2 0.28:

La prise en charge du proxy HTTP est désormais intégrée; libcurl n'est plus utilisé pour supporter
proxies et est supprimé en tant que dépendance.

Peut-être déposer un problème contre libgit2? Vous pouvez également essayer d'annuler les modifications que j'ai apportées à gitcredential.jl dans https://github.com/JuliaLang/julia/pull/32806 , juste au cas où (elles sont nécessaires pour certains tests spécifiques, mais pas pour la plupart des opérations).

Suppression du jalon car il est un peu bizarre d'avoir un http.proxy vide, et nous pouvons mettre à jour libgit2 en 1.3.1 ou autre.

Je peux reproduire quelque chose de similaire, mais l'extrait que vous avez envoyé ci-dessus renvoie -12 . Il semble avoir été introduit dans un commit récent - julia 1.2.0 fonctionne bien mais 1.3.0-rc1 et les nightlies master / latest (47f2800747) échouent.

Ce problème est également apparu pour moi avec http(s)_proxy défini comme variable d'environnement. Il doit être annulé (pas défini sur une chaîne vide) pour l'éviter.

Merci pour la suggestion @tkluck - malheureusement, la désactivation de http_proxy et http_proxy ne fait pas plus de différence pour moi - je reçois toujours -12 code de retour :(

J'ai eu ce problème tout à l'heure et je voudrais rapporter les résultats du test avec trois binaires Julia nouvellement construits dans les branches release-1.0, release-1.3 et master. (Je n'ai pas pu tester la version 1.2 en raison d'erreurs de construction.) Les trois tests ont été menés avec ~/.julia vide. Les variables d'environnement http_proxy et https_proxy sont définies dans ~/.bashrc .

release-1.0 (pas d'erreur):

julia> VERSION
v"1.0.6-pre.0"

(v1.0) pkg> update
 Resolving package versions...
   Cloning default registries into /Users/MY_USER_ID/.julia/registries
   Cloning registry General from "https://github.com/JuliaRegistries/General.git"
    Fetching: [========================================>]  99.9 %

release-1.3 (erreur):

julia> VERSION
v"1.3.0-rc3.0"

(v1.3) pkg> update
   Cloning default registries into `~/.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: Git repository not found at 'https://github.com/JuliaRegistries/General.git'

maître (erreur):

julia> VERSION
v"1.4.0-DEV.298"

(v1.4) pkg> update
   Cloning default registries into `~/.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: Git repository not found at 'https://github.com/JuliaRegistries/General.git'

J'espère que ce problème sera bientôt résolu!

Votre http_proxy manque-t-il une barre oblique à la fin? Voir https://github.com/libgit2/libgit2/issues/5255

@kcajf , votre solution fonctionne! Merci beaucoup!!!

Pour les autres, la solution ici est de mettre / à la fin du numéro de port proxy. Par exemple, dans ~/.bashrc , utilisez

export http_proxy=http://your.proxy.address:8080/

au lieu de

export http_proxy=http://your.proxy.address:8080

Soupir. Il est difficile de fâcheusement libgit2 pour soins s'il y a une barre oblique ou non.

Ouais. Je ne peux pas imaginer qu'il sera difficile de le réparer en amont, mais la question est de savoir si cela peut se produire dans un délai raisonnable pour la 1.3.0. Je pense que cela causera des problèmes à de nombreux utilisateurs de Julia en entreprise, car je suppose que le format sans barre oblique est le format le plus courant.

Nous pourrions le corriger de notre côté en recherchant la variable d'environnement et en détectant l'absence de barre oblique de fin et en la corrigeant. C'est un peu bizarre de jouer avec des variables d'environnement utilisateur qui ne sont même pas spécifiques à Julia. Cela semble un peu dangereux même si cela évite des problèmes ...

Il peut également être récupéré à partir de ~ / .gitconfig et de quelques autres endroits, il n'y a donc pas de solution globale

Les développeurs de libgit2 n'ont pas encore commenté cela, c'est peut-être juste un oubli. Sinon, nous pouvons essayer de les convaincre de changer cela ...

Ils ont commenté depuis et il semble que cela sera corrigé dans la prochaine version de libgit2.

Avec 1.3, mise à jour de 1.1, j'obtiens

(v1.3) pkg> up
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
┌ Warning: Some registries failed to update:
│     — /home/levitta/.julia/registries/General — failed to fetch from repo
└ @ Pkg.Types /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Pkg/src/Types.jl:1199
 Resolving package versions...

Après rm -rf .julia , j'obtiens

(v1.3) pkg> up
   Cloning default registries into `~/.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: Git repository not found at 'https://github.com/JuliaRegistries/General.git'

Je suis derrière un proxy d'université, et mes versions http_proxy, https_proxy et leurs majuscules sont toutes correctement définies (avec une barre oblique à la fin).

edit: je devrais mentionner qui a fonctionné en 1.1 et 1.2
edit2: oh, et le script ci-dessus renvoie -12.

voir le code ici pour savoir comment extraire le message d'erreur réel: https://github.com/libgit2/libgit2/issues/5255#issuecomment -540705608

les URL proxy peuvent provenir des variables d'environnement, mais peuvent également provenir d'autres endroits, par exemple ~/.gitconfig . Peut-être sont-ils mis ailleurs? Ce serait bien si nous pouvions demander à libgit2 d'afficher l'URL finale du proxy qu'il détecte.

Je crains que ce problème ne cause beaucoup de problèmes aux utilisateurs d'entreprise et universitaires. J'espère que libgit2 publiera bientôt une mise à jour qui pourra être incluse dans une version mineure de Julia.

Ooooh, très bonne prise, elle a en effet été définie dans .gitconfig , qui a la priorité sur les variables env. Avec ça, ça marche!

La barre oblique finale est la solution, mais l'homme qui est vraiment stupide .....

Se mettre d'accord. C'est un bogue libgit2, pas un bogue Julia. Doit être corrigé dans une nouvelle libgit2.

Encore un problème dans Julia 1.3.1

@staticfloat : n'avons-nous pas mis à jour libgit2?

La dernière fois que nous avons reconstruit libgit2 (par exemple, reconstruit avec de nouveaux fragments BB) était https://github.com/JuliaLang/julia/commit/e44652ab03ce384444bddfaca270c04b42d968a8

La dernière fois que nous avons mis à jour la version de libgit2 était https://github.com/JuliaLang/julia/commit/d0b5d9850fb7b51c7831d3897ad46e4d3478d322

Si nous avons besoin d'une version spécifique contenant un correctif, faites-le moi savoir et je créerai de nouvelles versions.

0.28.4 a un tas de correctifs de sécurité, donc devrait probablement être mis à jour?

0.24.4 ne semble pas inclure https://github.com/libgit2/libgit2/commit/c6ab183e9c960b74471a7d106a4deb0c8b28a8ec qui aurait corrigé ce problème (https://github.com/libgit2/libgit2/issues89255# ).

Donc, je suppose que la question est de savoir si nous voulons patcher libgit2 ou simplement attendre qu'ils fassent une version qui inclut ce correctif.

Je n'avais pas de proxy et j'avais ce problème, je l'ai résolu en rétrogradant libgit2 de 0.99.0 à 0.27.8

Je n'avais pas de proxy et j'avais ce problème, je l'ai résolu en rétrogradant libgit2 de 0.99.0 à 0.27.8

Peut confirmer. J'ai également eu ce problème, sans configuration de proxy (du moins pas dans mon .gitconfig ). Je l'ai corrigé exactement de la même manière - en rétrogradant libgit2 de 0.99.0 à 0.27.8 .

Je n'avais pas de proxy et j'avais ce problème, je l'ai résolu en rétrogradant libgit2 de 0.99.0 à 0.27.8

Peut confirmer. J'ai également eu ce problème, sans configuration de proxy (du moins pas dans mon .gitconfig ). Je l'ai corrigé exactement de la même manière - en rétrogradant libgit2 de 0.99.0 à 0.27.8 .

Je l'ai aussi sur Arch Linux - libgit2 est 1: 0.99.0-2

La rétrogradation de libgit2 n'est pas une option. J'ai besoin soit de quelque chose à mettre dans mon .gitconfig pour que cela disparaisse sans rien casser d'autre, soit d'un correctif dans Julia.

$ julia --version
julia version 1.3.1

...

julia> using Pkg

julia> Pkg.add("IJulia")
   Cloning default registries into `~/.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] top-level scope at REPL[2]:1
caused by [exception 1]
GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] top-level scope at REPL[2]:1

Vous pouvez utiliser le Julia 1.4 bientôt disponible avec JULIA_PKG_SERVER=pkg.julialang.org et il n'utilisera pas du tout libgit2 pour installer les paquets enregistrés.

Je suis d'accord avec ce bug. J'utilise manjaro .. libgit2 est mis à jour à 0.99 et mon environnement julia (1.3.1) est cassé en ce moment .... J'ai installé julia sur une nouvelle machine. Il est également cassé. J'ai remarqué que ce bogue affecte uniquement la mise à jour du registre à partir de github. Mais les packages peuvent toujours être installés si le registre est cloné manuellement sous ~ / .julia / registries / General ... Je suppose que la mise à jour peut également être gérée manuellement ...

Quand cela arrivera-t-il?

Vous pouvez utiliser le Julia 1.4 bientôt disponible avec JULIA_PKG_SERVER=pkg.julialang.org et il n'utilisera pas du tout libgit2 pour installer les paquets enregistrés.

Vous pouvez le faire dès maintenant si vous utilisez une version candidate ou JuliaPro 1.3 .

J'ai mis à jour libgit2 à 0.99 sur freebsd, et j'ai le même problème. La solution de contournement pour pkg consiste à mettre à jour manuellement ~/.julia/registries/General .

Veuillez plutôt le signaler au repo libgit2 (sauf s'il s'agit d'un duplicata de https://github.com/libgit2/libgit2/issues/5220, dans lequel vous pouvez peut-être résoudre ce problème.)

Les problèmes avec LibGit2 0.99.0 signalés dans les commentaires ne sont pas liés au rapport de bogue original, consultez plutôt le problème # 35043 et le PR # 35232 pour une solution suggérée.

Vous pouvez utiliser le Julia 1.4 bientôt disponible avec JULIA_PKG_SERVER=pkg.julialang.org et il n'utilisera pas du tout libgit2 pour installer les paquets enregistrés.

Cette solution de contournement ne fonctionne malheureusement pas, j'utilise julia 1.4.

@getzze Comment Julia ? Peut-être avez-vous oublié de export la variable d'environnement JULIA_PKG_SERVER dans votre shell avant d'appeler Julia dans une invite de shell séparée?

La solution de contournement fonctionne sur _Arch Linux_ en utilisant _Julia_ 1.4.0:

[tamer<strong i="10">@zinc</strong> ~]$ pacman -Q libgit2 julia
libgit2 1:0.99.0-2
julia 2:1.4.0-1

[tamer<strong i="11">@zinc</strong> ~]$ rm -r ~/.julia/registries/General/
[tamer<strong i="14">@zinc</strong> ~]$ julia -e 'using Pkg; Pkg.update()'
    Cloning default registries into `~/.julia`
    Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, update_registry::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:206
 [2] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:201 [inlined]
 [3] #up#47 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [4] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [5] #up#44 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193 [inlined]
 [6] up() at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193
 [7] top-level scope at none:1
caused by [exception 1]
GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
Stacktrace:
 [1] up(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, update_registry::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:206
 [2] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:201 [inlined]
 [3] #up#47 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [4] up at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:196 [inlined]
 [5] #up#44 at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193 [inlined]
 [6] up() at /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/API.jl:193
 [7] top-level scope at none:1
[tamer<strong i="17">@zinc</strong> ~]$ JULIA_PKG_SERVER=pkg.julialang.org julia -e 'using Pkg; Pkg.update()'
    Cloning default registries into `~/.julia`
######################################################################## 100.0%
      Added registry `General` to `~/.julia/registries/General`
   Updating registry at `~/.julia/registries/General`
   Updating `~/.julia/environments/v1.4/Project.toml`
 [no changes]
   Updating `~/.julia/environments/v1.4/Manifest.toml`
 [no changes]

Si vous avez déjà le registre en tant que clone git, il continuera à l'utiliser comme clone git au lieu d'utiliser le serveur Pkg, c'est pourquoi vous devez le supprimer.

Merci, je n'ai pas compris que vous deviez supprimer les registres avant.
Cependant, j'utilise la version de développement de certains packages, je dois donc récupérer depuis git et un package qui ne parvient pas à être récupéré entraîne l'échec de toutes les mises à jour.

Exécution de Julia 1.4.0. Ne pas utiliser de proxy. Windows 10 Pkg.add fonctionne, sur Linux Manjaro pour le même package, il renvoie l'erreur ci-dessus :(

La solution

Salut, je suis sur manjaro Linux. Dans mon cas, cela a aidé

mkdir -p /home/terabyte/.julia/registries/General && git clone https://github.com/JuliaRegistries/General.git ~/.julia/registries/General

Puis en Julia

julia> using Pkg

julia> Pkg.add("IJulia")

Il n'est pas nécessaire de supprimer un dossier. Avec...

X<strong i="6">@alienware</strong>: ~/ pacman -Q libgit2 julia
libgit2 1:1.0.0-1
julia 2:1.4.0-1

Je reçois

X<strong i="10">@alienware</strong>: ~/ julia -e 'using Pkg; Pkg.update()'
   Updating registry at '/usr/applications/academia/julia/registries/General'
   Updating git-repo 'https://github.com/JuliaRegistries/General.git'
┌ Warning: Some registries failed to update:
│     — /usr/applications/academia/julia/registries/General — failed to fetch from repo
└ @ Pkg.Types /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/Types.jl:1122
   Updating '/usr/applications/academia/julia/environments/v1.4/Project.toml'
 [no changes]
   Updating '/usr/applications/academia/julia/environments/v1.4/Manifest.toml'
 [no changes]

J'ai initialement appliqué la solution de contournement @gwatcha , mais en utilisant

X<strong i="15">@alienware</strong>: General/ pwd
/usr/applications/academia/julia/registries/General
                              --   --   (master  origin)     
X<strong i="16">@alienware</strong>: General/ git pull

Fait le même travail. Quand je suis retourné chez Julia et que j'ai essayé de mettre à niveau les paquets ... ils ont mis à jour:

(@v1.4) pkg> update
   Updating registry at `/usr/applications/academia/julia/registries/General`
   Updating git-repo `https://github.com/JuliaRegistries/General.git`
┌ Warning: Some registries failed to update:
│     — /usr/applications/academia/julia/registries/General — failed to fetch from repo
└ @ Pkg.Types /build/julia/src/julia-1.4.0/usr/share/julia/stdlib/v1.4/Pkg/src/Types.jl:1122
  Installed RecipesPipeline ─ v0.1.2
  Installed Plots ─────────── v1.0.8
   Updating `/usr/applications/academia/julia/environments/v1.4/Project.toml`
  [91a5bcdd] ↑ Plots v1.0.4 ⇒ v1.0.8
   Updating `/usr/applications/academia/julia/environments/v1.4/Manifest.toml`
  [91a5bcdd] ↑ Plots v1.0.4 ⇒ v1.0.8
  [01d81517] + RecipesPipeline v0.1.2
   Building Plots → `/usr/applications/academia/julia/packages/Plots/7U0ob/deps/build.log`

Tout cela parce que je n'ai pas pu obtenir Plots 1.0 à partir de JULIA_PKG_SERVER=pkg.julialang.org . Donc, si vous avez envie / besoin de la dernière version des paquets, la mise à jour manuelle des registres peut faire l'affaire jusqu'à ce que Julia et libgit2 se parlent à nouveau.

Edit: apparemment, il est maintenant dans pkg.julialang.org (seulement jusqu'à la v0.28 lorsque j'ai essayé). Cela vaut le coup si vous ne voulez pas jouer avec les dossiers et rétrograder les packages.

git problème même ici

ERROR: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)


env: Arch, julia1.4.0, libgit2 1.0.0

Si vous êtes sur Julia 1.4, vous pouvez faire export JULIA_PKG_SERVER=pkg.julialang.org et vous n'aurez pas besoin d'utiliser git pour les opérations Pkg. Vous devrez d'abord faire rm -rf ~/.julia/registries/General pour mettre à niveau le registre général pour utiliser le protocole Pkg au lieu de git.

Ce problème doit être signalé à Arch, ils ont besoin d'un correctif comme https://github.com/JuliaLang/julia/pull/35233 s'ils utilisent libgit2 1.0.

Pour mémoire, j'ai de nouveau été frappé par cela en essayant à nouveau Julia 1.5 pour la première fois au travail, une barre oblique de fin nécessaire sur le proxy dans ~/.gitconfig .

Quelqu'un qui se soucie de cela va devoir harceler le projet libgit2 et s'assurer qu'ils font réellement une version qui inclut une correction de bogue pour cela. Attendre clairement qu'ils résolvent le problème par eux-mêmes ne fonctionne pas.

Pour moi, cette erreur s'est produite parce que j'utilise un proxy socks5 (.gitconfig, et git clone fonctionne avec le proxy socks5). Le passage au proxy http l'a corrigé.

21 janv.

Donc, je suppose que la question est de savoir si nous voulons patcher libgit2 ou simplement attendre qu'ils fassent une version qui inclut ce correctif.

21 août

Attendre clairement qu'ils résolvent le problème par eux-mêmes ne fonctionne pas.

Alors allez-y avec le premier? (patch libgit2) Vous pourrez peut-être même leur apporter le patch.

Demander aux utilisateurs de classer les problèmes / gérer les bibliothèques en amont est un peu injuste, IMO (ce sont les utilisateurs qui s'en soucieront à la fin, après tout)

Juste ou pas, je ne rencontre pas ce problème et je n'ai pas envie de me débrouiller dans libgit2 pour résoudre ce problème. Si vous voulez payer pour que quelqu'un travaille là-dessus, contactez [email protected] et nous pouvons trouver un contrat de conseil. Vous pouvez également acheter JuliaTeam et vous n'aurez pas ce problème car vous pouvez vous connecter à un serveur de packages qui se trouve à l'intérieur de votre pare-feu, vous n'avez donc pas du tout besoin de passer par un proxy (il y a aussi beaucoup d'autres avantages intéressants ). À tout le moins, vous pourriez faire du bruit sur https://github.com/libgit2/libgit2/issues/5220 au lieu d'ici. @fredrikekre est littéralement la seule personne à y avoir posté. Au lieu de cela, tout le monde nous dérange et je suppose que nous attendons de nous que nous harcelions les développeurs de libgit2 pour eux? Si tous ceux qui ont posté ici ont également posté une plainte sur le repo libgit2, ils l'ont peut-être déjà corrigée.

J'ai maintenant envoyé un ping à tous ceux qui ont posté ici et dans les problèmes connexes où ce bogue libgit2 était la cause sous-jacente de leur problème sur le problème libgit2 pertinent. Veuillez indiquer ici vos rapports de bogue à ce sujet.

Peut-être que https://github.com/JuliaLang/julia/pull/35233 aiderait? Je n'ai pas examiné les notes de mise à jour.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

wilburtownsend picture wilburtownsend  ·  3Commentaires

m-j-w picture m-j-w  ·  3Commentaires

ararslan picture ararslan  ·  3Commentaires

StefanKarpinski picture StefanKarpinski  ·  3Commentaires

tkoolen picture tkoolen  ·  3Commentaires