Каскадный сбой системы пакетов Джулии

#package #julia

#пакет #джулия

Вопрос:

Все началось с того, что в какой-то момент Pluto не запустился, выдавая ошибку несовместимости с каким-то пакетом. Я удалил несколько пакетов, которые казались мне возможным источником проблем, и начал обновлять пакеты, в результате чего получил жалобу на несовместимость с конкретным пакетом. Я также удалил его — я получил жалобу на следующий, и так несколько раз. Ситуация оказалась слишком сложной, и я полностью удалил каталог с пакетами и установил их снова. Но ошибка повторилась снова. Теперь я записал все более подробно. Во-первых, Pluto выдал ошибку в связи с пакетом «FuzzyCompletions», который я специально не устанавливал:

  Warning: Reading WebSocket client stream failed for unknown reason:
│   parentbody = Dict{Any,Any} with 5 entries: …
│   exception =
│    TaskFailedException:
│    On worker 2:
│    LoadError: Unsatisfiable requirements detected for package FuzzyCompletions [fb4132e2]:
│     FuzzyCompletions [fb4132e2] log:
│     ├─FuzzyCompletions [fb4132e2] has no known versions!
│     └─restricted to versions 0.3-0.4 by an explicit requirement — no versions left
│    check_constraints at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcResolvegraphtype.jl:935
│    Graph at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcResolvegraphtype.jl:362
│    deps_graph at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcOperations.jl:502
│    resolve_versions! at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcOperations.jl:374
│    up at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcOperations.jl:1222#up#106 at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcAPI.jl:245#up#38 at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcAPI.jl:68 [inlined]#instantiate#170 at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcAPI.jl:810
│    instantiate at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5PkgsrcAPI.jl:795
│    top-level scope at C:Usersten.juliapackagesPlutoluIaCsrcrunnerLoader.jl:22
│    include at .client.jl:457
│    top-level scope at none:1eval at .boot.jl:331#103 at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5Distributedsrcprocess_messages.jl:290
│    run_work_thunk at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5Distributedsrcprocess_messages.jl:79
│    run_work_thunk at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5Distributedsrcprocess_messages.jl:88#96 at .task.jl:356in expression starting at C:Usersten.juliapackagesPlutoluIaCsrcrunnerLoader.jl:1
│    Stacktrace:
│     [1] sync_end(::Channel{Any}) at .task.jl:314
│     [2] macro expansion at .task.jl:333 [inlined]
│     [3] remotecall_eval(::Module, ::Array{Int64,1}, ::Expr) at C:buildbotworkerpackage_win64buildusrsharejuliastdlibv1.5Distributedsrcmacros.jl:218
│     [4] create_workspaceprocess(; compiler_options::Pluto.Configuration.CompilerOptions) at C:Usersten.juliapackagesPlutoluIaCsrcevaluationWorkspaceManager.jl:170
│     [5] make_workspace(::Tuple{Pluto.ServerSession,Pluto.Notebook}) at C:Usersten.juliapackagesPlutoluIaCsrcevaluationWorkspaceManager.jl:43
│     [6] #7 at C:Usersten.juliapackagesPlutoluIaCsrcevaluationWorkspaceManager.jl:188 [inlined]
│     [7] macro expansion at C:Usersten.juliapackagesPlutoluIaCsrcevaluationTokens.jl:76 [inlined]
│     [8] (::Pluto.var"#1#2"{Pluto.WorkspaceManager.var"#7#9"{Tuple{Pluto.ServerSession,Pluto.Notebook}},Pluto.Promise{Pluto.WorkspaceManager.Workspace}})() at .task.jl:356
│    Stacktrace:
│     [1] wait at .task.jl:267 [inlined]
│     [2] wait(::Pluto.Promise{Pluto.WorkspaceManager.Workspace}) at C:Usersten.juliapackagesPlutoluIaCsrcevaluationTokens.jl:83
│     [3] get_workspace at C:Usersten.juliapackagesPlutoluIaCsrcevaluationWorkspaceManager.jl:190 [inlined]
│     [4] (::Pluto.var"#204#206")(::Pluto.ServerSession, ::Dict{Any,Any}, ::Pluto.Notebook; initiator::Pluto.Initiator) at C:Usersten.juliapackagesPlutoluIaCsrcwebserverREPLTools.jl:92
│     [5] process_ws_message(::Pluto.ServerSession, ::Dict{Any,Any}, ::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:Usersten.juliapackagesPlutoluIaCsrcwebserverWebServer.jl:357
│     [6] (::Pluto.var"#215#225"{Pluto.ServerSession,Base.RefValue{Function}})(::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:Usersten.juliapackagesPlutoluIaCsrcwebserverWebServer.jl:160
│     [7] upgrade(::Pluto.var"#215#225"{Pluto.ServerSession,Base.RefValue{Function}}, ::HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}; binary::Bool) at C:Usersten.juliapackagesHTTPIAI92srcWebSockets.jl:160│     [8] upgrade at C:Usersten.juliapackagesHTTPIAI92srcWebSockets.jl:142 [inlined]
│     [9] (::Pluto.var"#214#224"{Pluto.ServerSession,HTTP.Handlers.Router{Symbol("##280")},Base.RefValue{Function}})(::HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:Usersten.juliapackagesPlutoluIaCsrcwebserverWebServer.jl:147
│     [10] handle at C:Usersten.juliapackagesHTTPIAI92srcHandlers.jl:269 [inlined]
│     [11] #4 at C:Usersten.juliapackagesHTTPIAI92srcHandlers.jl:345 [inlined]
│     [12] macro expansion at C:Usersten.juliapackagesHTTPIAI92srcServers.jl:367 [inlined]
│     [13] (::HTTP.Servers.var"#13#14"{HTTP.Handlers.var"#4#5"{HTTP.Handlers.StreamHandlerFunction{Pluto.var"#214#224"{Pluto.ServerSession,HTTP.Handlers.Router{Symbol("##280")},Base.RefValue{Function}}}},HTTP.ConnectionPool.Transaction{Sockets.TCPSocket},HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}})() at .task.jl:356
└ @ Pluto C:Usersten.juliapackagesPlutoluIaCsrcwebserverWebServer.jl:168
 

Во время первоначальной установки пакетов не было никаких ошибок или предупреждений, эта ошибка была первой

Я решил попробовать удалить Pluto и запустить обновление, но после этого я получил следующую ошибку:

 julia> Pkg.rm("Pluto")
Updating `C:Usersten.juliaenvironmentsv1.5Project.toml`
  [c3e4b0f8] - Pluto v0.12.18
Updating `C:Usersten.juliaenvironmentsv1.5Manifest.toml`
  [fb4132e2] - FuzzyCompletions v0.4.0
  [99f44e22] - MsgPack v1.1.0
  [c3e4b0f8] - Pluto v0.12.18

julia> Pkg.update()
ERROR: Unsatisfiable requirements detected for package Distributions [31c24e10]:
 Distributions [31c24e10] log:
 ├─Distributions [31c24e10] has no known versions!
 └─restricted to versions * by an explicit requirement — no versions left
 

Удалил его и получил претензию к следующему пакету:

 julia> Pkg.rm("Distributions")
Updating `C:Usersten.juliaenvironmentsv1.5Project.toml`
  [31c24e10] - Distributions v0.24.10
No Changes to `C:Usersten.juliaenvironmentsv1.5Manifest.toml`

julia> Pkg.update()
ERROR: Unsatisfiable requirements detected for package CSV [336ed68f]:
 CSV [336ed68f] log:
 ├─CSV [336ed68f] has no known versions!
 └─restricted to versions * by an explicit requirement — no versions left
 

Удалил его и получил претензию к следующему пакету:

 julia> Pkg.rm("CSV")
Updating `C:Usersten.juliaenvironmentsv1.5Project.toml`
  [336ed68f] - CSV v0.8.2
No Changes to `C:Usersten.juliaenvironmentsv1.5Manifest.toml`

julia> Pkg.update()
ERROR: Unsatisfiable requirements detected for package DataFrames [a93c6f00]:
 DataFrames [a93c6f00] log:
 ├─DataFrames [a93c6f00] has no known versions!
 └─restricted to versions * by an explicit requirement — no versions left
 

Возможно, можно было бы продолжить этот путь, но очевидно, что это не решит проблему. Поэтому я остановился и решил попросить совета

Все пакеты, которые я использую, довольно стандартны. Вот текущее состояние того, что осталось после удаления:

 julia> Pkg.status()
Status `C:Usersten.juliaenvironmentsv1.5Project.toml`
  [dcc97b0b] GeoStats v0.21.0
  [916415d5] Images v0.23.3
  [682c06a0] JSON v0.21.1
  [91a5bcdd] Plots v1.10.1
  [7f904dfe] PlutoUI v0.6.11
  [92933f4c] ProgressMeter v1.4.1
  [6f49c342] RCall v0.13.10
  [de0858da] Printf
  [9a3f8284] Random
  [10745b16] Statistics
 

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

Комментарии:

1. Возможно, ваш файл реестра скомпрометирован? Похоже, что он не может найти какую-либо версию какого-либо пакета. Вы можете попробовать удалить его и добавить снова с ]registry rm General помощью и ]registry add https://github.com/JuliaRegistries/General .

2. Я обновил файл реестра, обновил все пакеты (на этот раз успешно), вернул то, что я удалил. Кажется, все работает. Спасибо! Я не понял, в чем проблема, но, похоже, метод с перезагрузкой реестра позволяет ее решить.

3. Тогда я напишу это как ответ. Рад, что это сработало!

Ответ №1:

Как я уже писал в комментариях, проблема, вероятно, заключается в реестре Julia. Чтобы получить более полное представление о том, что такое реестры и как они работают, вы можете взглянуть на документацию.

Для проверки состояния реестра вы можете использовать (в REPL) ] registry status и обновить его ] registry update .

Однако, возможно, что-то сломалось. Затем вы можете удалить и добавить реестр обратно. Это делается с помощью:

 pkg> registry rm General
pkg> registry add https://github.com/JuliaRegistries/General
 

где pkg> находится Pkg.jl REPL, который вы вводите с ] помощью .