Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I install curl with ares enabled

I have curl installed on the latest ubuntu via apt-get and that works fine, however I've been reading about the blocking nature of the DNS lookups and discovered that it's slowing down my app.

I've done apt-get install libc-ares2 but I'm not sure how to tell curl to use that library when doing a lookup.

I posted this question to AskUbuntu but was told it was probably better here..

like image 665
Dom Hodgson Avatar asked Jan 22 '13 19:01

Dom Hodgson


2 Answers

If you want installable .deb package instead of putting everything to /usr/local, do this:

sudo apt-get build-dep curl
sudo apt-get install libc-ares-dev build-essential
apt-get source curl
cd curl-*

This will download curl sources with Debian/Ubuntu build files and patches.

Edit file debian/control: add line libc-ares-dev to Build-Depends

Edit file debian/rules: remove --enable-threaded-resolver and add --enable-ares to CONFIGURE_ARGS

Optional: increase version number in the first line of debian/changelog, for example 7.38.0-4+deb8u5 to 7.38.0-4+deb8u6, this way your package will not get overwritten when you install updates to your system.

Now run command

dpkg-buildpackage -us -uc -b -j4

It will generate several .deb files after an unreasonably long compilation time, go drink coffee or something while it is compiling.

You can install your new curl with c-ares support using this command:

cd ..
sudo dpkg -i curl_*.deb libcurl3-*.deb libcurl4-openssl-dev*.deb
like image 73
pelya Avatar answered Oct 31 '22 15:10

pelya


I think the AskUbuntu are thinking that this is a programming question and not a configuration question. The binary you fetched by your apt-get command was not compiled with libc-ares2 (as an external library or a linked library). When you fetched libc-ares2 you got your computer to the point where it might build the version of cURL you want from source, but now the real work has begun.

Commonly you would download the source and look for a file called README or INSTALL. It will (hopefully) talk about a step that has a line like ./configure. From here you can specify compile time options. It's also possible that the make file for cURL can auto-detect the presence of libc-ares2 and include it in it's build.

However taking a look at the latest source release while there is no INSTALL file there is a configure script. Look at it's source it has this line:

--enable-ares[=PATH]    Enable c-ares for DNS lookups

If you run this command from the source folder:

./configure --enable-ares && make && sudo make install

Then you have a shot at getting the curl build you want. There may very likely be a lot of error messages related to other missing libraries or missing make and GCC. That will be harder to resolve in this answer.

Here is a page on cURL's project homepage that talks you through these steps

like image 43
Jason Sperske Avatar answered Oct 31 '22 13:10

Jason Sperske