Julia 包系统的级联崩溃
Cascading crash of Julia's packages system
这一切都始于这样一个事实,即在某个时候 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:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Resolve\graphtype.jl:935
│ Graph at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Resolve\graphtype.jl:362
│ deps_graph at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:502
│ resolve_versions! at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:374
│ up at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:1222
│ #up#106 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:245
│ #up#38 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:68 [inlined]
│ #instantiate#170 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:810
│ instantiate at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:795
│ top-level scope at C:\Users\ten\.julia\packages\Pluto\luIaC\src\runner\Loader.jl:22
│ include at .\client.jl:457
│ top-level scope at none:1
│ eval at .\boot.jl:331
│ #103 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:290
│ run_work_thunk at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:79
│ run_work_thunk at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:88
│ #96 at .\task.jl:356
│ in expression starting at C:\Users\ten\.julia\packages\Pluto\luIaC\src\runner\Loader.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:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\macros.jl:218
│ [4] create_workspaceprocess(; compiler_options::Pluto.Configuration.CompilerOptions) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:170
│ [5] make_workspace(::Tuple{Pluto.ServerSession,Pluto.Notebook}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:43
│ [6] #7 at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:188 [inlined]
│ [7] macro expansion at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\Tokens.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:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\Tokens.jl:83
│ [3] get_workspace at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:190 [inlined]
│ [4] (::Pluto.var"#204#206")(::Pluto.ServerSession, ::Dict{Any,Any}, ::Pluto.Notebook; initiator::Pluto.Initiator) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\REPLTools.jl:92
│ [5] process_ws_message(::Pluto.ServerSession, ::Dict{Any,Any}, ::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:357
│ [6] (::Pluto.var"#215#225"{Pluto.ServerSession,Base.RefValue{Function}})(::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.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:\Users\ten\.julia\packages\HTTP\IAI92\src\WebSockets.jl:160│ [8] upgrade at C:\Users\ten\.julia\packages\HTTP\IAI92\src\WebSockets.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:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:147
│ [10] handle at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Handlers.jl:269 [inlined]
│ [11] #4 at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Handlers.jl:345 [inlined]
│ [12] macro expansion at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Servers.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:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:168
在初始安装软件包期间,没有任何错误或警告,这是第一个错误
我决定尝试删除 Pluto 和 运行 更新,但之后我收到以下错误:
julia> Pkg.rm("Pluto")
Updating `C:\Users\ten\.julia\environments\v1.5\Project.toml`
[c3e4b0f8] - Pluto v0.12.18
Updating `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.toml`
[31c24e10] - Distributions v0.24.10
No Changes to `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.toml`
[336ed68f] - CSV v0.8.2
No Changes to `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.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
我还没有找到任何解决此类连锁事故的方法以及可能的原因的方法。如果我做错了什么,我准备再次完全拆除 packages 文件夹并重新安装它们。但是我好像不明白这是怎么回事,所以我想了解一下这个现象的本质,这样以后就不会再发生了
正如我已经在评论中写到的,问题可能出在 Julia registry 上。
要更深入地了解什么是注册管理机构及其工作方式,您可以查看 Documentation.
要检查注册表的状态,您可以使用(在 REPL 中)] registry status
并更新它 ] registry update
。
但是,可能有些东西坏了。然后您可以删除并重新添加注册表。
这是通过以下方式完成的:
pkg> registry rm General
pkg> registry add https://github.com/JuliaRegistries/General
其中 pkg>
是您输入 ]
的 Pkg.jl REPL。
这一切都始于这样一个事实,即在某个时候 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:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Resolve\graphtype.jl:935
│ Graph at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Resolve\graphtype.jl:362
│ deps_graph at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:502
│ resolve_versions! at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:374
│ up at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:1222
│ #up#106 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:245
│ #up#38 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:68 [inlined]
│ #instantiate#170 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:810
│ instantiate at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:795
│ top-level scope at C:\Users\ten\.julia\packages\Pluto\luIaC\src\runner\Loader.jl:22
│ include at .\client.jl:457
│ top-level scope at none:1
│ eval at .\boot.jl:331
│ #103 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:290
│ run_work_thunk at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:79
│ run_work_thunk at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\process_messages.jl:88
│ #96 at .\task.jl:356
│ in expression starting at C:\Users\ten\.julia\packages\Pluto\luIaC\src\runner\Loader.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:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\macros.jl:218
│ [4] create_workspaceprocess(; compiler_options::Pluto.Configuration.CompilerOptions) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:170
│ [5] make_workspace(::Tuple{Pluto.ServerSession,Pluto.Notebook}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:43
│ [6] #7 at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:188 [inlined]
│ [7] macro expansion at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\Tokens.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:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\Tokens.jl:83
│ [3] get_workspace at C:\Users\ten\.julia\packages\Pluto\luIaC\src\evaluation\WorkspaceManager.jl:190 [inlined]
│ [4] (::Pluto.var"#204#206")(::Pluto.ServerSession, ::Dict{Any,Any}, ::Pluto.Notebook; initiator::Pluto.Initiator) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\REPLTools.jl:92
│ [5] process_ws_message(::Pluto.ServerSession, ::Dict{Any,Any}, ::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:357
│ [6] (::Pluto.var"#215#225"{Pluto.ServerSession,Base.RefValue{Function}})(::HTTP.WebSockets.WebSocket{HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at C:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.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:\Users\ten\.julia\packages\HTTP\IAI92\src\WebSockets.jl:160│ [8] upgrade at C:\Users\ten\.julia\packages\HTTP\IAI92\src\WebSockets.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:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:147
│ [10] handle at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Handlers.jl:269 [inlined]
│ [11] #4 at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Handlers.jl:345 [inlined]
│ [12] macro expansion at C:\Users\ten\.julia\packages\HTTP\IAI92\src\Servers.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:\Users\ten\.julia\packages\Pluto\luIaC\src\webserver\WebServer.jl:168
在初始安装软件包期间,没有任何错误或警告,这是第一个错误
我决定尝试删除 Pluto 和 运行 更新,但之后我收到以下错误:
julia> Pkg.rm("Pluto")
Updating `C:\Users\ten\.julia\environments\v1.5\Project.toml`
[c3e4b0f8] - Pluto v0.12.18
Updating `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.toml`
[31c24e10] - Distributions v0.24.10
No Changes to `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.toml`
[336ed68f] - CSV v0.8.2
No Changes to `C:\Users\ten\.julia\environments\v1.5\Manifest.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:\Users\ten\.julia\environments\v1.5\Project.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
我还没有找到任何解决此类连锁事故的方法以及可能的原因的方法。如果我做错了什么,我准备再次完全拆除 packages 文件夹并重新安装它们。但是我好像不明白这是怎么回事,所以我想了解一下这个现象的本质,这样以后就不会再发生了
正如我已经在评论中写到的,问题可能出在 Julia registry 上。 要更深入地了解什么是注册管理机构及其工作方式,您可以查看 Documentation.
要检查注册表的状态,您可以使用(在 REPL 中)] registry status
并更新它 ] registry update
。
但是,可能有些东西坏了。然后您可以删除并重新添加注册表。 这是通过以下方式完成的:
pkg> registry rm General
pkg> registry add https://github.com/JuliaRegistries/General
其中 pkg>
是您输入 ]
的 Pkg.jl REPL。