Why is this happening?
Well, if you end up on this page, you for sure are in a bad situation.
It took me some good hours to debug and solve this problem but maybe you can close this chapter much faster. You are encountering this issue because a native module that you are using depends on CURL_OPENSSL_4.
Am I in the same situation?
There are multiple reasons why you may encounter this error: CURL_OPENSSL_4 not found.
The most common ones are:
- Symbolic Link from /usr/lib/x86_64-linux-gnu/libcurl.so.4 -> /usr/lib/x86_64-linux-gnu/libcurl.so.4.X.X is bad. You might need to recreate it.
- libcurl version is not installed -> Easy fix -> install it
- libcurl version is wrong -> This is what we’re gonna cover
If you are a Linux user who is also into system level software development, you may find yourself in situations where-in you need information related to symbols in an object file. You’ll be glad to know there exists a command line utility – nm – that you can use in these situations.
The nm command line utility basically lists symbols from object files. Here’s the tool’s syntax:
nm [OPTIONS] OBJECT-FILENAME
nm -D /usr/lib/x86_64-linux-gnu/libcurl.so.4|grep CURL
What you should see is:
0000000000000000 A CURL_OPENSSL_4
What you might see:
0000000000000000 A CURL_OPENSSL_3
Well clearly things don’t look good. Your Linux distribution is built using other libcurl version. You may attempt to uninstall it and add another version but it might break apt.
The Million $ Solution
I switched to a Linux distribution that includes libcurl4.
I was using node-12-slim which is built on Debian-Stretch. You cannot install libcurl4 on this version since it’s built on CURL_OPENSSL_3.
I switched to node-12-buster-slim which is built on top of Debian-Buster and installed libcurl4 and things started working.
apt-get install libcurl4 -y
That’s all 🙂