我已经通过apt-get在最新的ubuntu上安装了curl并且工作正常,但是我一直在阅读有关DNS查找的阻塞性质,并发现它正在减慢我的应用程序。
我已经完成了apt-get install libc-ares2但是我不确定如何告诉curl在进行查找时使用该库。
我把这个问题发给了AskUbuntu,但被告知这里可能更好......
答案 0 :(得分:7)
我认为AskUbuntu认为这是一个编程问题而不是配置问题。您使用apt-get
命令获取的二进制文件未使用libc-ares2编译(作为外部库或链接库)。当您获取libc-ares2
时,您的计算机可能会构建您想要的cURL版本from source,但现在真正的工作已经开始。
通常您会下载源代码并查找名为README或INSTALL的文件。它(希望)会谈论一个像./configure
这样的行的步骤。从这里您可以指定编译时选项。 cURL的make文件也可以自动检测libc-ares2
的存在并将其包含在其构建中。
然而,在没有INSTALL
文件的情况下查看最新的源代码版本时,会有一个configure
脚本。看看它有这条线的来源:
--enable-ares[=PATH] Enable c-ares for DNS lookups
如果从源文件夹运行此命令:
./configure --enable-ares && make && sudo make install
然后你有机会获得你想要的卷曲构造。可能存在很多与其他缺失库或缺少make和GCC相关的错误消息。在这个答案中,这将更难解决。
Here is a page在cURL的项目主页上,通过这些步骤与您进行了对话
答案 1 :(得分:7)
如果您想要可安装的.deb
包而不是将所有内容放到/usr/local
,请执行以下操作:
sudo apt-get build-dep curl
sudo apt-get install libc-ares-dev build-essential
apt-get source curl
cd curl-*
这将使用Debian / Ubuntu构建文件和补丁下载curl
个源。
修改文件debian/control
:将行libc-ares-dev
添加到Build-Depends
修改文件debian/rules
:移除--enable-threaded-resolver
并将--enable-ares
添加到CONFIGURE_ARGS
可选:在debian/changelog
的第一行增加版本号,例如7.38.0-4+deb8u5
到7.38.0-4+deb8u6
,这样在您安装系统更新时,您的包不会被覆盖。< / p>
现在运行命令
dpkg-buildpackage -us -uc -b -j4
在编译时间不合理的情况下会产生几个.deb文件,在编译时喝咖啡或其他东西。
您可以使用以下命令安装新的curl
c-ares
支持:
cd ..
sudo dpkg -i curl_*.deb libcurl3_*.deb libcurl4-openssl-dev*.deb
答案 2 :(得分:0)