I recently ran into this problem on a cluster running Rocky Linux 9.2, which is basically the same as RHEL 9.2. The problem in my case turned out to be the LD_LIBRARY_PATH
environment variable, which was being set by a line I added long ago to my ~/.bashrc
file. To fix some other problem, I’d added this line
export LD_LIBRARY_PATH=/usr/lib64/:....
This was setting the LD_LIBRARY_PATH
environment variable, which the Julia process inherits from the shell. That setting forces the operating system to look in /usr/lib64
and a few other directories any time a program tries to load a .so
file. Since libssl.so
lists that it requires libcrypto.so.3
, the operating system would find /usr/lib64/libcrypto.so.3
which is from a system-wide installation of OpenSSL, and try to load that. But the system file is from an older version of OpenSSL than the Julia package can use.
To fix the problem, I commented that line out of my ~/.bashrc
by putting a #
at the beginning of the line. I logged out & logged back in again. Now nothing is setting that environment variable, and Julia can load MLJ without that error. When Julia loads libssl.so
from the file in ~/.julia/artifacts/...
, the operating has to also load libcrypto.so.3
from somewhere, because libssl.so
lists that it requires it. Since I’m no longer setting LD_LIBRARY_PATH
, the operating system loads libcrypto.so.3
from the same directory in ~/.julia/artifacts/...
where it found libssl.so
, and that’s the correct version.
To see if you have this same problem, go to a shell where you could run julia
and run
echo $LD_LIBRARY_PATH
If the result is nothing, then you have some other problem. If it shows something like /usr/lib64:...
then you probably have the same problem I did. I’d start by looking at your shell initialization files ~/.bashrc
, ~/.bash_profile
, … for a line where it sets LD_LIBRARY_PATH
and try commenting it out.
If your shell initialization files don’t set that variable, I’d look into whether you’re using conda
or module
or some other software management tool that might be setting LD_LIBRARY_PATH
somehow.
You may run into a clash where some other program you use needs to set LD_LIBRARY_PATH
, in which case you’ll have to figure out some other fix.