Julia: LibGit2 не может клонировать или получать на Julia 1.3 / master

Созданный на 29 авг. 2019  ·  66Комментарии  ·  Источник: JuliaLang/julia

Открываю этот вопрос здесь, так как я почти уверен, что Pkg ничего не изменил, возможно, это связано с обновлением 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

Самый полезный комментарий

@getzze Как вы вызываете Юлию? Может быть, вы забыли export переменную среды JULIA_PKG_SERVER в своей оболочке перед вызовом Джулии в отдельном приглашении оболочки?

Обходной путь работает в _Arch Linux_ с _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]

Все 66 Комментарий

У меня работает на Mac.

Хорошо, я использую Linux. Возвращение # 32806 устраняет эту проблему для меня.

Репродуктор без кода 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

Возможно, не связано: сегодня я видел ту же ошибку в Julia 1.0.4 на macOS. Я исправил это, зайдя в реестр в моем терминале и запустив git fetch . После этого обновления Pkg перестали выдавать предупреждение.

Возможно, не связано: сегодня я видел ту же ошибку в Julia 1.0.4 на macOS. Я исправил это, зайдя в реестр в моем терминале и запустив git fetch. После этого обновления Pkg перестали выдавать предупреждение.

Это не помогло мне. Кроме того, я пробовал с другой машины, но не смог воспроизвести. Есть идеи, как отлаживать?

Клонирование с нуля также не удается, с тем же сообщением об ошибке unrecognized URL prefix .

Это также происходит с общими двоичными файлами, кстати.

Возможный способ отладки в будущем - уменьшить его до ccalls, а затем заглянуть в libgit2, где возникает ошибка.

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)

возвращает -1 .

FWIW оба примера работают здесь на последней версии мастера. Кто-нибудь еще может воспроизвести?

@fredrikekre, вы можете опубликовать свою конфигурацию git?

Интересно, что я сократил файл .gitconfig до

[http]
    proxy =

Я не уверен, почему он там есть, не думаю, что добавил его сам. Похоже, что [email protected] не справляется с этим, в то время как [email protected] обрабатывает это (как и обычный git)

Возможно, это связано с этим моментом из примечаний к выпуску libgit2 0.28:

Поддержка HTTP-прокси теперь встроена; libcurl больше не используется для поддержки
прокси и удаляется как зависимость.

Может быть, подать жалобу на libgit2? Вы также можете попробовать отменить изменения, которые я внес в gitcredential.jl в https://github.com/JuliaLang/julia/pull/32806 , на всякий случай (они требуются для некоторых конкретных тестов, но не для большинства операций).

Удаление из вехи, так как довольно странно иметь пустой http.proxy , и мы можем обновить libgit2 в 1.3.1 или что-то еще.

Я могу воспроизвести нечто подобное, но отправленный вами выше фрагмент возвращает -12 . Похоже, что это было введено в недавнем коммите - julia 1.2.0 работает нормально, но 1.3.0-rc1 и master / latest nightlies (47f2800747) не работают.

Эта проблема также появилась у меня с http(s)_proxy установленным в качестве переменной среды. Чтобы этого избежать, его нужно не задавать (не устанавливать на пустую строку).

Спасибо за предложение @tkluck - к сожалению, отключение http_proxy и http_proxy не имеет значения больше меня - все еще получаю код возврата -12 :(

У меня только что возникла эта проблема, и я хотел бы сообщить о результатах тестирования трех недавно созданных двоичных файлов Julia в ветках release-1.0, release-1.3 и master. (Мне не удалось протестировать релиз 1.2 из-за ошибок сборки.) Все три теста проводились с пустым значением ~/.julia . Переменные среды http_proxy и https_proxy определены в ~/.bashrc .

релиз-1.0 (без ошибок):

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 %

релиз-1.3 (ошибка):

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'

мастер (ошибка):

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'

Надеюсь, эта проблема скоро будет решена!

В вашем http_proxy отсутствует косая черта в конце? См. Https://github.com/libgit2/libgit2/issues/5255

@kcajf , ваше решение работает! Огромное спасибо!!!

Для других решение здесь - поставить / в конце номера порта прокси. Например, в ~/.bashrc используйте

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

вместо

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

Вздох. Это досадно суетливо с libgit2 заботиться о том, есть ли завершающая косая черта или нет.

Да уж. Я не могу представить, что будет сложно исправить это в апстриме, но вопрос в том, может ли это случиться в разумные сроки для 1.3.0. Я ожидаю, что это вызовет проблемы для многих корпоративных пользователей Julia, так как я предполагаю, что формат без косой черты является более распространенным.

Мы могли бы исправить это со своей стороны, найдя переменную окружения, обнаружив отсутствие завершающей косой черты и исправив ее. Но немного странно возиться с переменными пользовательской среды, которые даже не связаны с Джулией. Это кажется опасным, даже если избавит от неприятностей ...

Его также можно взять из ~ / .gitconfig и некоторых других мест, поэтому общего решения нет.

Разработчики libgit2 еще не прокомментировали это, возможно, это просто недосмотр. Если нет, мы можем попытаться убедить их изменить это ...

С тех пор они комментировали, и похоже, что это будет исправлено в следующем выпуске libgit2.

С 1.3 при обновлении с 1.1 получаю

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

После rm -rf .julia я получаю

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

Я использую университетский прокси, и мои http_proxy, https_proxy и их версии с шапками установлены правильно (с косой чертой в конце).

изменить: я должен упомянуть, что работал в 1.1 и 1.2
edit2: о, и приведенный выше сценарий возвращает -12.

см. здесь код, чтобы узнать, как извлечь фактическое сообщение об ошибке: https://github.com/libgit2/libgit2/issues/5255#issuecomment -540705608

URL-адреса прокси могут быть получены из переменных env, но также могут поступать из других мест, например, ~/.gitconfig . Может они где-то ставятся? Было бы неплохо, если бы мы могли заставить libgit2 распечатать окончательный URL-адрес прокси, который он обнаруживает.

Я боюсь, что эта проблема доставит много проблем корпоративным и университетским пользователям. Надеюсь, libgit2 скоро выпустит обновление, которое может быть включено в младшую версию julia.

Ооооо, очень хороший улов, он действительно был установлен в .gitconfig , который имеет приоритет над переменными env. С этим все работает!

Завершающая косая черта - это исправление, но это действительно глупо ...

Согласен. Это ошибка libgit2, а не ошибка Джулии. Должно быть исправлено в новой версии libgit2.

По-прежнему проблема в Julia 1.3.1

@staticfloat : мы не обновляли libgit2?

Последний раз, когда мы перестраивали libgit2 (например, перестраивали с новыми шардами BB), было https://github.com/JuliaLang/julia/commit/e44652ab03ce384444bddfaca270c04b42d968a8

В последний раз мы обновляли версию libgit2 https://github.com/JuliaLang/julia/commit/d0b5d9850fb7b51c7831d3897ad46e4d3478d322

Если нам нужна конкретная версия, содержащая исправление, дайте мне знать, и я создам новые версии.

В 0.28.4 есть несколько исправлений безопасности, так что стоит ли обновиться?

0.24.4, похоже, не включает https://github.com/libgit2/libgit2/commit/c6ab183e9c960b74471a7d106a4deb0c8b28a8ec, хотя который якобы исправил эту проблему (https://github.com/libgit2/libgit2/issue89-5255 ).

Итак, я предполагаю, что вопрос в том, хотим ли мы исправить libgit2 или просто подождать, пока они выпустят выпуск, включающий это исправление.

У меня не было прокси, и у меня была эта проблема, я исправил ее, понизив версию libgit2 с 0.99.0 до 0.27.8

У меня не было прокси, и у меня была эта проблема, я исправил ее, понизив версию libgit2 с 0.99.0 до 0.27.8

Могу подтвердить. У меня также была эта проблема без настройки прокси (по крайней мере, не в моем .gitconfig ). Я исправил это точно так же - понизив версию libgit2 с 0.99.0 до 0.27.8 .

У меня не было прокси, и у меня была эта проблема, я исправил ее, понизив версию libgit2 с 0.99.0 до 0.27.8

Могу подтвердить. У меня также была эта проблема без настройки прокси (по крайней мере, не в моем .gitconfig ). Я исправил это точно так же - понизив версию libgit2 с 0.99.0 до 0.27.8 .

У меня это тоже есть в Arch Linux - libgit2 составляет 1: 0.99.0-2

Понижение версии libgit2 невозможно. Мне нужно либо что-то добавить в мой .gitconfig, чтобы это исчезло, не нарушая ничего другого, либо исправление в 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

Вы можете использовать версию Julia 1.4, которая скоро будет выпущена, с JULIA_PKG_SERVER=pkg.julialang.org и она вообще не будет использовать libgit2 для установки зарегистрированных пакетов.

Я согласен с этой ошибкой. Я использую manjaro .. libgit2 обновлен до 0.99, и моя среда julia (1.3.1) прямо сейчас не работает .... Я установил julia на новую машину. Он тоже сломан. Я заметил, что ошибка влияет только на обновление реестра с github. Но пакеты все еще можно установить, если registery вручную клонирован в ~ / .julia / registries / General ... Я полагаю, что обновление можно обрабатывать и вручную ...

Когда это произойдет?

Вы можете использовать версию Julia 1.4, которая скоро будет выпущена, с JULIA_PKG_SERVER=pkg.julialang.org и она вообще не будет использовать libgit2 для установки зарегистрированных пакетов.

Вы можете сделать это прямо сейчас, если используете релиз-кандидат или JuliaPro 1.3 .

У меня libgit2 обновлен до 0.99 на freebsd, и у меня такая же проблема. Обходной путь для pkg - вручную обновить ~/.julia/registries/General .

Вместо этого сообщите в репозиторий libgit2 (если только он не является дубликатом https://github.com/libgit2/libgit2/issues/5220, в котором вы, возможно, можете устранить эту проблему).

Проблемы с LibGit2 0.99.0, о которых сообщалось в комментариях, не связаны с исходным отчетом об ошибке, вместо этого см. Проблему № 35043 и PR № 35232 для предлагаемого исправления.

Вы можете использовать версию Julia 1.4, которая скоро будет выпущена, с JULIA_PKG_SERVER=pkg.julialang.org и она вообще не будет использовать libgit2 для установки зарегистрированных пакетов.

К сожалению, этот обходной путь не работает, я использую julia 1.4.

@getzze Как вы вызываете Юлию? Может быть, вы забыли export переменную среды JULIA_PKG_SERVER в своей оболочке перед вызовом Джулии в отдельном приглашении оболочки?

Обходной путь работает в _Arch Linux_ с _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]

Если у вас уже есть реестр как клон git, он будет продолжать использовать его как клон git вместо использования сервера Pkg, поэтому вам необходимо его удалить.

Спасибо, я не понял, что вам нужно удалить реестры раньше.
Однако я использую версию для разработки некоторых пакетов, поэтому мне нужно получить из git, и один пакет, который не может быть получен, приводит к сбою всего обновления.

Работает Юля 1.4.0. Не использовать прокси. Windows 10 Pkg.add работает, в Linux Manjaro для того же пакета выдает ошибку выше :(

Решение @tuhtah работает, хотя

Привет, я использую Manjaro Linux. В моем случае это помогло

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

Тогда в Юлии

julia> using Pkg

julia> Pkg.add("IJulia")

Нет необходимости удалять какую-либо папку. С участием...

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

я получил

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]

Первоначально я применил обходной путь

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

Выполняет ту же работу. Когда я вернулся к Джулии и попытался обновить пакеты ... они обновились:

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

Все это потому, что я не мог получить Plots 1.0 из JULIA_PKG_SERVER=pkg.julialang.org . Итак, если вам нравится / нужна последняя версия пакетов, обновление реестров вручную может помочь, пока julia и libgit2 снова не начнут общаться друг с другом.

Изменить: по-видимому, теперь он находится в pkg.julialang.org (только до v0.28, когда я пытался). Стоит попробовать, если вы не хотите возиться с папками и понижать версию пакетов.

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)


env: Arch, julia1.4.0, libgit2 1.0.0

Если вы используете Julia 1.4, вы можете сделать export JULIA_PKG_SERVER=pkg.julialang.org и вам не нужно будет использовать git для операций с Pkg. Вам нужно сначала выполнить rm -rf ~/.julia/registries/General чтобы обновить общий реестр до использования протокола Pkg вместо git.

Об этой проблеме следует сообщить в Arch, им нужен патч вроде https://github.com/JuliaLang/julia/pull/35233, если они используют libgit2 1.0.

Для справки, я снова столкнулся с этим, снова попробовав Julia 1.5 в первый раз на работе, завершив косую черту на прокси в ~/.gitconfig .

Кому-то, кому это небезразлично, придется беспокоить проект libgit2 и убедиться, что он действительно выпускает выпуск, включающий исправление этой ошибки. Ясно, что ждать, пока они исправят это самостоятельно, не получается.

Для меня эта ошибка возникла из-за того, что я использую прокси-сервер socks5 (.gitconfig, а git clone постоянно работает с прокси-сервером socks5). Изменение на прокси-сервер http исправило это.

21 января

Итак, я предполагаю, что вопрос в том, хотим ли мы исправить libgit2 или просто подождать, пока они выпустят выпуск, включающий это исправление.

21 августа

Ясно, что ждать, пока они исправят это самостоятельно, не получается.

Так что оставьте первое? (patch libgit2) Возможно, вы даже сможете внести в них патч.

Просить пользователей о проблемах с файлами / работе с вышестоящими библиотеками - это немного несправедливо, ИМО (в конце концов, это пользователи, которым все равно)

Справедливо это или нет, но я не сталкивался с этой проблемой, и мне не хочется копаться в libgit2, чтобы исправить это. Если вы хотите заплатить кому-то за работу над этим, свяжитесь с [email protected], и мы сможем заключить договор на консультационные услуги. Вы также можете приобрести JuliaTeam, и тогда у вас не будет этой проблемы, потому что вы можете подключиться к серверу пакетов, который находится внутри вашего брандмауэра, поэтому вам вообще не нужно проходить через прокси (есть также много других приятных преимуществ ). По крайней мере, вы могли бы пошуметь на https://github.com/libgit2/libgit2/issues/5220, а не здесь. @fredrikekre - буквально единственный человек, который там

Теперь я связался со всеми, кто разместил здесь и по связанным вопросам, где эта ошибка libgit2 была основной причиной их проблемы по соответствующей проблеме libgit2. Пожалуйста, поделитесь своими отчетами об ошибках по этому поводу.

Может быть, https://github.com/JuliaLang/julia/pull/35233 поможет? Я не заглядывал в примечания к патчу.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

sbromberger picture sbromberger  ·  3Комментарии

tkoolen picture tkoolen  ·  3Комментарии

Keno picture Keno  ·  3Комментарии

TotalVerb picture TotalVerb  ·  3Комментарии

i-apellaniz picture i-apellaniz  ·  3Комментарии