-
Notifications
You must be signed in to change notification settings - Fork 67
conda pkg openssl is restricted to version <3.1 - this prevents installation of recent r-base #587
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Yep unfortunately Julia currently uses OpenSSL 3.0 (this is apparently intentional) so for compatibility reasons we restrict the version of OpenSSL installed by CondaPkg. You can override this by setting the This is an annoying incompatibility - you can't install new versions of Python for the same reason. I need to open a dialogue with Julia maintainers about this. |
Thank you so much for your comment. For Python it is the same? Indeed a big pity... Please feel free to close this issue or keep it open, whatever you like. |
I believe Julia now uses a more up to date version of OpenSSL, which is now causing problems when installing certain packages with JuliaCall/PythonCall. In short, the following error is commonly encountered (on Linux at least)
To reproduce:
Info: |
I started running into this problem yesterday too. I'm in need of a quick solution, so I'm hoping downgrading julia within my docker container will fix things for now |
Just bumped into this too juliacall.JuliaError: InitError: could not load library "/root/.julia/artifacts/a69.../lib/libssl.so"
264.4 /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.3.0' not found (required by /root/.julia/artifacts/a69.../lib/libssl.so) FULL ERROR STACK
"OpenSSL_jll": {
"uuid": "458c3c95-2e84-50aa-8efc-19380b2a3a95"
},
"OpenSSL": {
"uuid": "4d8831e6-92b7-49fb-bdf8-b643e874388c"
}, 258.6 jl.seval("using OpenSSL")
258.6 File "/root/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl", line 27, in seval
258.6 return self._jl_callmethod($(pyjl_methodnum(pyjlmodule_seval)), expr)
260.1 juliacall.JuliaError: InitError: could not load library "/root/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so"
260.1 /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.3.0' not found (required by /root/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so)
260.1 Stacktrace:
260.1 [1] dlopen(s::String, flags::UInt32; throw_error::Bool)
260.1 @ Base.Libc.Libdl ./libdl.jl:120
260.1 [2] dlopen(s::String, flags::UInt32)
260.1 @ Base.Libc.Libdl ./libdl.jl:119
260.1 [3] macro expansion
260.1 @ ~/.julia/packages/JLLWrappers/GfYNv/src/products/library_generators.jl:63 [inlined]
260.1 [4] __init__()
260.1 @ OpenSSL_jll ~/.julia/packages/OpenSSL_jll/WaTt1/src/wrappers/x86_64-linux-gnu.jl:16
260.1 [5] run_module_init(mod::Module, i::Int64)
260.1 @ Base ./loading.jl:1378
260.1 [6] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
260.1 @ Base ./loading.jl:1366
260.1 [7] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
260.1 @ Base ./loading.jl:1254
260.1 [8] _include_from_serialized (repeats 2 times)
260.1 @ ./loading.jl:1210 [inlined]
260.1 [9] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
260.1 @ Base ./loading.jl:2041
260.1 [10] _require(pkg::Base.PkgId, env::String)
260.1 @ Base ./loading.jl:2527
260.1 [11] __require_prelocked(uuidkey::Base.PkgId, env::String)
260.1 @ Base ./loading.jl:2388
260.1 [12] #invoke_in_world#3
260.1 @ ./essentials.jl:1089 [inlined]
260.1 [13] invoke_in_world
260.1 @ ./essentials.jl:1086 [inlined]
260.1 [14] _require_prelocked(uuidkey::Base.PkgId, env::String)
260.1 @ Base ./loading.jl:2375
260.1 [15] macro expansion
260.1 @ ./loading.jl:2314 [inlined]
260.1 [16] macro expansion
260.1 @ ./lock.jl:273 [inlined]
260.1 [17] __require(into::Module, mod::Symbol)
260.1 @ Base ./loading.jl:2271
260.1 [18] #invoke_in_world#3
260.1 @ ./essentials.jl:1089 [inlined]
260.1 [19] invoke_in_world
260.1 @ ./essentials.jl:1086 [inlined]
260.1 [20] require(into::Module, mod::Symbol)
260.1 @ Base ./loading.jl:2260
260.1 [21] eval
260.1 @ ./boot.jl:430 [inlined]
260.1 [22] eval
260.1 @ ./Base.jl:130 [inlined]
260.1 [23] pyjlmodule_seval(self::Module, expr::Py)
260.1 @ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl:13
260.1 [24] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64)
260.1 @ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/base.jl:67
260.1 [25] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject})
260.1 @ PythonCall.JlWrap.Cjl ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/C.jl:63
260.1 during initialization of module OpenSSL_jll Setup:
|
Trying to debug, here is the shortest example so far: Fresh Python cd /tmp
python3 -m venv pythoncall587
source pythoncall587/bin/activate
pip install juliacall This installs >>> from juliacall import Main as jl # see package install list Resolving package versions...
Updating `/tmp/pythoncall587/julia_env/Project.toml`
[6099a3de] + PythonCall v0.9.24
Updating `/tmp/pythoncall587/julia_env/Manifest.toml`
[992eb4ea] + CondaPkg v0.2.28
[9a962f9c] + DataAPI v1.16.0
[e2d170a0] + DataValueInterfaces v1.0.0
[82899510] + IteratorInterfaceExtensions v1.0.0
[692b3bcd] + JLLWrappers v1.7.0
[0f8b85d8] + JSON3 v1.14.2
[1914dd2f] + MacroTools v0.5.16
[0b3b1443] + MicroMamba v0.1.14
[bac558e1] + OrderedCollections v1.8.0
[69de0a69] + Parsers v2.8.3
[fa939f87] + Pidfile v1.3.0
⌅ [aea7be01] + PrecompileTools v1.2.1
[21216c6a] + Preferences v1.4.3
[6099a3de] + PythonCall v0.9.24
[ae029012] + Requires v1.3.1
[6c6a2e73] + Scratch v1.2.1
[856f2bd8] + StructTypes v1.11.0
[3783bdb8] + TableTraits v1.0.1
[bd369af6] + Tables v1.12.0
[e17b2a0c] + UnsafePointers v1.0.0
[f8abcde7] + micromamba_jll v1.5.8+0
[4d7b5844] + pixi_jll v0.41.3+0
[0dad84c5] + ArgTools v1.1.2
[56f22d72] + Artifacts v1.11.0
[2a0f44e3] + Base64 v1.11.0
[ade2ca70] + Dates v1.11.0
[f43a241f] + Downloads v1.6.0
[7b1f6079] + FileWatching v1.11.0
[b77e0a4c] + InteractiveUtils v1.11.0
[4af54fe1] + LazyArtifacts v1.11.0
[b27032c2] + LibCURL v0.6.4
[76f85450] + LibGit2 v1.11.0
[8f399da3] + Libdl v1.11.0
[56ddb016] + Logging v1.11.0
[d6f4376e] + Markdown v1.11.0
[a63ad114] + Mmap v1.11.0
[ca575930] + NetworkOptions v1.2.0
[44cfe95a] + Pkg v1.11.0
[de0858da] + Printf v1.11.0
[9a3f8284] + Random v1.11.0
[ea8e919c] + SHA v0.7.0
[9e88b42a] + Serialization v1.11.0
[fa267f1f] + TOML v1.0.3
[a4e569a6] + Tar v1.10.0
[8dfed614] + Test v1.11.0
[cf7118a7] + UUIDs v1.11.0
[4ec0a83e] + Unicode v1.11.0
[deac9b47] + LibCURL_jll v8.6.0+0
[e37daf67] + LibGit2_jll v1.7.2+0
[29816b5a] + LibSSH2_jll v1.11.0+1
[c8ffd9c3] + MbedTLS_jll v2.28.6+0
[14a3606d] + MozillaCACerts_jll v2023.12.12
[83775a58] + Zlib_jll v1.2.13+1
[8e850ede] + nghttp2_jll v1.59.0+0
[3f19e933] + p7zip_jll v17.4.0+2 >>> jl.seval("import Pkg; Pkg.add(\"OpenSSL\")") # installs OpenSSL 1.4.3 Resolving package versions...
Updating `/tmp/pythoncall587/julia_env/Project.toml`
[4d8831e6] + OpenSSL v1.4.3
Updating `/tmp/pythoncall587/julia_env/Manifest.toml`
[d1d4a3ce] + BitFlags v0.1.9
[4d8831e6] + OpenSSL v1.4.3
[458c3c95] + OpenSSL_jll v3.5.0+0
[6462fe0b] + Sockets v1.11.0 >>> jl.seval("using OpenSSL") JuliaCall.JuliaError: InitError: could not open library ... OPENSSL_3.3.0Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/dehann/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl", line 27, in seval
return self._jl_callmethod($(pyjl_methodnum(pyjlmodule_seval)), expr)
juliacall.JuliaError: InitError: could not load library "/home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so"
/lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.3.0' not found (required by /home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so)
Stacktrace:
[1] dlopen(s::String, flags::UInt32; throw_error::Bool)
@ Base.Libc.Libdl ./libdl.jl:120
[2] dlopen(s::String, flags::UInt32)
@ Base.Libc.Libdl ./libdl.jl:119
[3] macro expansion
@ ~/.julia/packages/JLLWrappers/GfYNv/src/products/library_generators.jl:63 [inlined]
[4] __init__()
@ OpenSSL_jll ~/.julia/packages/OpenSSL_jll/WaTt1/src/wrappers/x86_64-linux-gnu.jl:16
[5] run_module_init(mod::Module, i::Int64)
@ Base ./loading.jl:1378
[6] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1366
[7] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
@ Base ./loading.jl:1254
[8] _include_from_serialized (repeats 2 times)
@ ./loading.jl:1210 [inlined]
[9] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
@ Base ./loading.jl:2041
[10] _require(pkg::Base.PkgId, env::String)
@ Base ./loading.jl:2527
[11] __require_prelocked(uuidkey::Base.PkgId, env::String)
@ Base ./loading.jl:2388
[12] #invoke_in_world#3
@ ./essentials.jl:1089 [inlined]
[13] invoke_in_world
@ ./essentials.jl:1086 [inlined]
[14] _require_prelocked(uuidkey::Base.PkgId, env::String)
@ Base ./loading.jl:2375
[15] macro expansion
@ ./loading.jl:2314 [inlined]
[16] macro expansion
@ ./lock.jl:273 [inlined]
[17] __require(into::Module, mod::Symbol)
@ Base ./loading.jl:2271
[18] #invoke_in_world#3
@ ./essentials.jl:1089 [inlined]
[19] invoke_in_world
@ ./essentials.jl:1086 [inlined]
[20] require(into::Module, mod::Symbol)
@ Base ./loading.jl:2260
[21] eval
@ ./boot.jl:430 [inlined]
[22] eval
@ ./Base.jl:130 [inlined]
[23] pyjlmodule_seval(self::Module, expr::Py)
@ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl:13
[24] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64)
@ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/base.jl:67
[25] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject})
@ PythonCall.JlWrap.Cjl ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/C.jl:63
during initialization of module OpenSSL_jll When looking at the JuliaError: juliacall.JuliaError: InitError: could not load library "/home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so"
/lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.3.0' not found (required by /home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so) and the $ ldd /home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so
linux-vdso.so.1 (0x0000726239f90000)
libcrypto.so.3 => /home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libcrypto.so.3 (0x0000726239400000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x0000726239f73000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x0000726239f6e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000726239000000)
/lib64/ld-linux-x86-64.so.2 (0x0000726239f92000) And trying to get some info on which OpenSSL is built in the artifact (looks like mostly 3.0.0, but also some 3.4.0 - huh?): $ objdump -T /home/dehann/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libcrypto.so.3 | grep -i get_version
0000000000185280 g DF .text 0000000000000003 OPENSSL_3.0.0 SCT_get_version
000000000031d4c0 g DF .text 0000000000000009 OPENSSL_3.0.0 X509_REQ_get_version
00000000002aaa20 g DF .text 0000000000000004 OPENSSL_3.0.0 RSA_get_version
00000000002efb50 g DF .text 0000000000000008 OPENSSL_3.0.0 TS_TST_INFO_get_version
0000000000326e70 g DF .text 0000000000000008 OPENSSL_3.0.0 X509_CRL_get_version
00000000002ed720 g DF .text 0000000000000008 OPENSSL_3.0.0 TS_REQ_get_version
000000000031d7b0 g DF .text 0000000000000008 OPENSSL_3.0.0 X509_get_version
0000000000318820 g DF .text 0000000000000008 OPENSSL_3.4.0 X509_ACERT_get_version So this really is a version thing 3.3.0 != 3.0.0. xref related:
I also followed a (potentially false) lead, since some of the error stacks above try find /lib/x86_64-linux-gnu/libcrypto.so.3 is 3.0.0$ objdump -T /lib/x86_64-linux-gnu/libcrypto.so.3 | grep -i get_version
000000000020db90 g DF .text 000000000000000c OPENSSL_3.0.0 TS_TST_INFO_get_version
0000000000114e20 g DF .text 0000000000000007 OPENSSL_3.0.0 SCT_get_version
000000000022abd0 g DF .text 000000000000000d OPENSSL_3.0.0 X509_REQ_get_version
0000000000236b00 g DF .text 000000000000000c OPENSSL_3.0.0 X509_CRL_get_version
000000000020db80 g DF .text 000000000000000c OPENSSL_3.0.0 TS_REQ_get_version
00000000001edf60 g DF .text 0000000000000008 OPENSSL_3.0.0 RSA_get_version
000000000022abe0 g DF .text 000000000000000c OPENSSL_3.0.0 X509_get_version xref related: |
Ah, solved the problem I was having. Both docker or native. Closely related to what @wilf-phasecraft mentioned. Perhaps bit more specifically this commit is where the compat issue happened: Specifically I have to forcefully install "julia": "1.11",
"OpenSSL_jll": {
"uuid": "458c3c95-2e84-50aa-8efc-19380b2a3a95",
"version": "=3.0.16"
}, |
Not sure whether this is a bug, probably not?
How can we rely on more recent openssl version, e.g. in order to install a recent
r-base
next to PythonCall?I got the following error
The text was updated successfully, but these errors were encountered: