I am using Julia 1.9.2 in a package I am developing. The package makes some calls to the R language forecast
package, and pulls the outputs back to julia. I am getting this error, but I am not clear on how to read this message or determine where the problem is.
Note that LD_LIBRARY_PATH is empty, so that is not causing the problem.
Here is the message.
ERROR: REvalError: Error: package or namespace load failed for ‘forecast’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/krishnab/R/x86_64-pc-linux-gnu-library/4.3/curl/libs/curl.so':
/home/krishnab/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libcurl.so: version `CURL_OPENSSL_4' not found (required by /home/krishnab/R/x86_64-pc-linux-gnu-library/4.3/curl/libs/curl.so)
So it seems like the error is that Julia is not finding libcurl.so
and that is the problem. So I checked the directory /home/krishnab/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libcurl.so
and it seems like there are 3 files there, libcurl.so
, libcurl.so.4
, and libcurl.so.4.8.0
. So does that mean I should create a symbolic link between libcurl.so
and libcurl.so.4
or something like that?
If I am misreading this message, please let me know. Seems like Julia is trying to pass the curl library to the R environment so that the forecast
package can use it, but if I am mistaken then let me know.
Also note that when I run curl --version
on my computer, I get the folliowing info back, which indicates OpenSSL/3.0.2. Seems like this should reference 4.0 instead of 3.0. Here is the output of that command.
curl --version
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.14
Release-Date: 2022-01-05
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd
Any help is appreciated.
UPDATE:
I can replicate this problem with some simple code.
- Create a new environment and install the
RCall
package. - Install the
forecast
package in R - run the following code.
using RCall
@rlibrary forecast
and the corresponding error message is:
ERROR: REvalError: Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/krishnab/R/x86_64-pc-linux-gnu-library/4.3/curl/libs/curl.so':
/home/krishnab/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libcurl.so: version `CURL_OPENSSL_4' not found (required by /home/krishnab/R/x86_64-pc-linux-gnu-library/4.3/curl/libs/curl.so)