Julia: LibGit2 não pode clonar ou buscar no Julia 1.3 / master

Criado em 29 ago. 2019  ·  66Comentários  ·  Fonte: JuliaLang/julia

Abrindo este problema aqui, pois tenho certeza que o Pkg não mudou nada, talvez isso esteja relacionado à atualização da 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

Comentários muito úteis

@getzze Como você está invocando julia? Talvez você tenha esquecido de export a variável de ambiente JULIA_PKG_SERVER em seu shell antes de invocar Julia em um prompt de shell separado?

A solução alternativa funciona em _Arch Linux_ usando _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]

Todos 66 comentários

Funciona para mim em um Mac.

Ok, estou no Linux. Reverter # 32806 corrige esse problema para mim.

Reprodutor sem qualquer código de pacote:

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

Possivelmente não relacionado: vi o mesmo erro no Julia 1.0.4 hoje no macOS. Eu consertei indo para o registro em meu terminal e executando git fetch . Depois disso, as atualizações do Pkg pararam de produzir o aviso.

Possivelmente não relacionado: vi o mesmo erro no Julia 1.0.4 hoje no macOS. Eu consertei indo para o registro em meu terminal e executando git fetch. Depois disso, as atualizações do Pkg pararam de produzir o aviso.

Isso não resolveu para mim. Além disso, tentei em uma máquina diferente, mas não consegui reproduzir. Alguma ideia de como depurar?

A clonagem do zero também falha, com a mesma mensagem de erro sobre unrecognized URL prefix .

Isso também acontece com os binários genéricos btw.

Uma possível maneira futura de depurar isso é reduzi-lo a apenas ccalls e, em seguida, examinar libgit2, onde o erro é gerado.

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)

retorna -1 .

FWIW ambos os exemplos funcionam aqui no último mestre. Alguém mais pode reproduzir?

@fredrikekre, você pode postar sua configuração git?

Interessante, eu reduzi o arquivo .gitconfig para

[http]
    proxy =

Não sei por que está lá, não acho que eu mesmo tenha adicionado. Parece que [email protected] falha para isso, enquanto [email protected] lida com isso (como faz o git regular)

Talvez relacionado a este ponto das notas de lançamento da libgit2 0,28:

O suporte ao proxy HTTP agora está integrado; libcurl não é mais usado para oferecer suporte
proxies e é removido como uma dependência.

Pode registrar um problema contra libgit2? Você também pode tentar reverter as alterações que fiz em gitcredential.jl em https://github.com/JuliaLang/julia/pull/32806 , apenas para garantir (elas são necessárias para alguns testes específicos, mas não para a maioria das operações).

Removendo do marco, já que é meio estranho ter um http.proxy vazio, e podemos atualizar a libgit2 em 1.3.1 ou qualquer outra coisa.

Posso reproduzir algo semelhante, mas o snippet que você enviou acima retorna -12 . Parece ter sido introduzido em um commit recente - julia 1.2.0 funciona bem, mas 1.3.0-rc1 e master / last nightlies (47f2800747) falham.

Esse problema também apareceu para mim com http(s)_proxy definido como uma variável de ambiente. Ele precisa ser removido (não definido como uma string vazia) para evitá-lo.

Obrigado pela sugestão @tkluck - infelizmente -12 código de retorno :(

Eu tive esse problema agora e gostaria de relatar os resultados do teste com três binários Julia recém-construídos no release-1.0, release-1.3 e branches master. (Não consegui testar a versão 1.2 devido a erros de compilação.) Todos os três testes foram conduzidos com ~/.julia vazio. As variáveis ​​de ambiente http_proxy e https_proxy são definidas em ~/.bashrc .

versão-1.0 (sem erro):

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 %

versão 1.3 (erro):

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'

mestre (erro):

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'

Espero que esse problema seja resolvido em breve!

Seu http_proxy faltando uma barra final? Veja https://github.com/libgit2/libgit2/issues/5255

@kcajf , sua solução funciona! Muito obrigado!!!

Para outros, a solução aqui é colocar / no final do número da porta do proxy. Por exemplo, em ~/.bashrc , use

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

ao invés de

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

Suspiro. É irritantemente exigente de libgit2 se preocupar se há uma barra final ou não.

Sim. Não posso imaginar que será difícil consertá-lo no upstream, mas a questão é se isso pode acontecer em um prazo razoável para o 1.3.0. Espero que isso cause problemas para muitos usuários corporativos da Julia, já que acho que o formato sem barra é o mais comum.

Poderíamos consertá-lo procurando a variável de ambiente, detectando a falta de barra final e corrigindo-a. É um pouco estranho mexer com variáveis ​​de ambiente do usuário que nem mesmo são específicas de Julia. Isso parece meio perigoso, mesmo que economize alguns problemas ...

Ele também pode ser obtido em ~ / .gitconfig e em alguns outros lugares, então não há uma solução geral

Os desenvolvedores da libgit2 ainda não comentaram sobre isso, talvez seja apenas um descuido. Se não, podemos tentar convencê-los a mudar isso ...

Eles comentaram desde então e parece que isso será corrigido na próxima versão da libgit2.

Com o 1.3, atualizando do 1.1, recebo

(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...

Depois de rm -rf .julia , eu recebo

(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'

Estou atrás de um proxy universitário e meu http_proxy, https_proxy e suas versões em maiúsculas estão todos configurados corretamente (com uma barra no final).

editar: devo mencionar que funcionou em 1.1 e 1.2
edit2: oh, e o script acima retorna -12.

consulte o código aqui para saber como extrair a mensagem de erro real: https://github.com/libgit2/libgit2/issues/5255#issuecomment -540705608

os urls do proxy podem ser originados dos env vars, mas também podem vir de outros lugares, por exemplo, ~/.gitconfig . Talvez eles estejam sendo colocados em outro lugar? Seria bom se pudéssemos fazer a libgit2 imprimir o URL final do proxy que está detectando.

Temo que esse problema vá causar muitos problemas para usuários corporativos e universitários. Espero que a libgit2 lance uma atualização em breve que possa ser incluída em uma versão menor do julia.

Ooooh, muito bom pega, realmente foi definido em .gitconfig , que tem precedência nas variáveis ​​env. Com isso, funciona!

Barra final é a solução, mas cara, isso é realmente estúpido ...

Aceita. É um bug libgit2, não um bug Julia. Deve ser corrigido em uma libgit2 mais recente.

Ainda é um problema em Julia 1.3.1

@staticfloat : não atualizamos libgit2?

A última vez que reconstruímos libgit2 (por exemplo, reconstruída com novos fragmentos de BB) foi https://github.com/JuliaLang/julia/commit/e44652ab03ce384444bddfaca270c04b42d968a8

A última vez que atualizamos a versão libgit2 foi https://github.com/JuliaLang/julia/commit/d0b5d9850fb7b51c7831d3897ad46e4d3478d322

Se precisarmos de uma versão específica que contenha uma correção, me avise e eu construirei novas versões.

0.28.4 tem um monte de correções de segurança, então provavelmente deveria atualizar?

0.24.4 não parece incluir https://github.com/libgit2/libgit2/commit/c6ab183e9c960b74471a7d106a4deb0c8b28a8ec que supostamente corrigiu esse problema (https://github.com/libgit2/libgit2/issues32/5255#15issuecomment )

Portanto, acho que a questão é se queremos corrigir o libgit2 ou apenas esperar até que eles façam um lançamento que inclua essa correção.

Eu não tinha proxy e tive este problema, resolvi fazendo o downgrade de libgit2 de 0.99.0 para 0.27.8

Eu não tinha proxy e tive este problema, resolvi fazendo o downgrade de libgit2 de 0.99.0 para 0.27.8

Pode confirmar. Eu também tive esse problema, sem qualquer proxy configurado (pelo menos não no meu .gitconfig ). Eu consertei exatamente da mesma maneira - fazendo o downgrade de libgit2 de 0.99.0 para 0.27.8 .

Eu não tinha proxy e tive este problema, resolvi fazendo o downgrade de libgit2 de 0.99.0 para 0.27.8

Pode confirmar. Eu também tive esse problema, sem qualquer proxy configurado (pelo menos não no meu .gitconfig ). Eu consertei exatamente da mesma maneira - fazendo o downgrade de libgit2 de 0.99.0 para 0.27.8 .

Eu também tenho isso no Arch Linux - libgit2 é 1: 0.99.0-2

O downgrade da libgit2 não é uma opção. Eu preciso colocar algo em meu .gitconfig que fará com que isso desapareça sem quebrar mais nada, ou uma correção em 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

Você pode usar o Julia 1.4 que logo será lançado com JULIA_PKG_SERVER=pkg.julialang.org e ele não usará libgit2 para instalar pacotes registrados.

Eu concordo com esse bug. Estou usando o manjaro .. libgit2 foi atualizado para 0.99 e meu ambiente julia (1.3.1) está quebrado agora .... Instalei o julia em uma nova máquina. Também está quebrado. Percebi que o bug afeta apenas a atualização do registro do github. Mas os pacotes ainda podem ser instalados se o registery for clonado manualmente em ~ / .julia / registries / General ... Presumo que a atualização também possa ser feita manualmente ...

Quando isso vai acontecer?

Você pode usar o Julia 1.4 que logo será lançado com JULIA_PKG_SERVER=pkg.julialang.org e ele não usará libgit2 para instalar pacotes registrados.

Você pode fazer isso agora mesmo se usar um candidato a lançamento ou JuliaPro 1.3 .

Eu atualizei a libgit2 para 0.99 no freebsd e tenho o mesmo problema. A solução alternativa para o pacote é atualizar manualmente ~/.julia/registries/General .

Em vez disso, informe ao repo libgit2 (a menos que seja uma duplicata de https://github.com/libgit2/libgit2/issues/5220, no qual você pode resolver esse problema).

Os problemas com LibGit2 0.99.0 relatados nos comentários não estão relacionados ao relatório de bug original, consulte o problema # 35043 e PR # 35232 para uma sugestão de correção.

Você pode usar o Julia 1.4 que logo será lançado com JULIA_PKG_SERVER=pkg.julialang.org e ele não usará libgit2 para instalar pacotes registrados.

Esta solução alternativa não funciona, infelizmente, estou usando o julia 1.4.

@getzze Como você está invocando julia? Talvez você tenha esquecido de export a variável de ambiente JULIA_PKG_SERVER em seu shell antes de invocar Julia em um prompt de shell separado?

A solução alternativa funciona em _Arch Linux_ usando _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]

Se você já tem o registro como um clone do git, ele continuará usando-o como um clone do git em vez de usar o servidor Pkg, por isso você deve excluí-lo.

Obrigado, não entendi que você precisa remover os registros antes.
No entanto, estou usando a versão de desenvolvimento de alguns pacotes, então preciso buscar do git e um pacote que não consegue ser buscado faz com que todas as atualizações falhem.

Executando Julia 1.4.0. Não usando nenhum proxy. Windows 10 Pkg.add funciona, no Linux Manjaro para o mesmo pacote que gera o erro acima :(

A solução

Olá, estou usando o Manjaro Linux. No meu caso, isso ajudou

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

Então em julia

julia> using Pkg

julia> Pkg.add("IJulia")

Não há necessidade de excluir nenhuma pasta. Com...

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

eu recebo

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]

Eu apliquei originalmente a solução alternativa @gwatcha , mas usando

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

Faz o mesmo trabalho. Quando voltei a Julia e tentei atualizar os pacotes ... eles atualizaram:

(@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`

Tudo isso porque não consegui obter Plots 1.0 de JULIA_PKG_SERVER=pkg.julialang.org . Portanto, se você gosta / precisa da versão mais recente dos pacotes, atualizar os registros manualmente pode resolver o problema até que julia e libgit2 se conversem novamente.

Editar: aparentemente, agora está em pkg.julialang.org (apenas até v0.28 quando tentei). Vale a pena tentar se você não quiser mexer com pastas e fazer o downgrade de pacotes.

git problema mesmo aqui

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, julia 1.4.0, libgit2 1.0.0

Se você estiver no Julia 1.4, poderá fazer export JULIA_PKG_SERVER=pkg.julialang.org e não precisará usar o git para operações Pkg. Você precisará fazer rm -rf ~/.julia/registries/General primeiro para atualizar o registro geral para usar o protocolo Pkg em vez do git.

Esse problema deve ser relatado ao Arch, eles precisam de um patch como https://github.com/JuliaLang/julia/pull/35233 se usarem libgit2 1.0.

Para o registro, fui atingido por isso novamente ao tentar Julia 1.5 pela primeira vez no trabalho novamente, a barra final necessária no proxy em ~/.gitconfig .

Alguém que se preocupa com isso vai ter que perturbar o projeto libgit2 e se certificar de que eles realmente fazem uma versão que inclui uma correção de bug para isso. Claramente, esperar que eles consertem por conta própria não está funcionando.

Para mim, esse erro aconteceu porque estou usando um proxy socks5 (.gitconfig e git clone funciona normalmente com o proxy socks5). Mudar para proxy http corrigiu isso.

21 de janeiro

Portanto, acho que a questão é se queremos corrigir o libgit2 ou apenas esperar até que eles façam um lançamento que inclua essa correção.

21 de agosto

Claramente, esperar que eles consertem por conta própria não está funcionando.

Então vá com o primeiro? (patch libgit2) Você pode até contribuir com o patch para eles.

Pedir aos usuários para registrar problemas / lidar com bibliotecas upstream é um pouco injusto, IMO (são os usuários que se importarão no final, afinal)

Justo ou não, não encontro esse problema e não sinto vontade de mexer na libgit2 para consertar isso. Se você quiser pagar alguém para trabalhar nisso, entre em contato com [email protected] e podemos fazer um contrato de consultoria. Você também pode comprar o JuliaTeam e então não terá esse problema porque pode se conectar a um servidor de pacotes que está dentro do seu firewall, então você não precisa passar por um proxy (há muitos outros benefícios interessantes também ) No mínimo, você poderia fazer algum barulho em https://github.com/libgit2/libgit2/issues/5220 em vez de aqui. @fredrikekre é literalmente a única pessoa que postou lá. Em vez disso, todos nos incomodam e eu acho que esperam que incomodemos os desenvolvedores da libgit2 por eles? Se todos os que postaram aqui também postaram uma reclamação no repo libgit2, eles já devem ter corrigido.

Agora, pinguei todos os que postaram aqui e em questões relacionadas em que esse bug da libgit2 era a causa subjacente de seu problema na questão libgit2 relevante. Por favor, entre com seus relatórios de bug relacionados a isso.

Talvez https://github.com/JuliaLang/julia/pull/35233 ajude? Eu não olhei para as notas do patch.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

StefanKarpinski picture StefanKarpinski  ·  249Comentários

mbauman picture mbauman  ·  276Comentários

StefanKarpinski picture StefanKarpinski  ·  113Comentários

StefanKarpinski picture StefanKarpinski  ·  145Comentários

StefanKarpinski picture StefanKarpinski  ·  131Comentários