在curl 7.33.0中使用--http2.0选项会提供不支持的协议

时间:2013-11-21 09:25:58

标签: linux curl http2 nghttp2

我正在使用centos 6.2,我需要在其中一个服务器请求中使用curl --http2.0,但是我看了7.19.6,看了http://curl.haxx.se/docs/manpage.html后给了我--http2.0只有curl 7.33.0支持选项,所以要解决这个问题,我按照http://www.linuxfromscratch.org/blfs/view/svn/basicnet/curl.html中的步骤安装了curl 7.33.0  安装curl之后,我试图使用它,但它仍然给我错误 curl(1):不支持的协议,我已经使用以下方法检查了我的卷曲版本: curl - 版本这给了我:

curl 7.33.0 (x86_64-unknown-linux-gnu) libcurl/7.33.0 OpenSSL/1.0.0 zlib/1.2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz 

我需要使用这个--http2.0但是没有得到任何我能做到的事情吗? 由于curl 7.19已经安装并且我重新安装了更高版本的curl,这是否会出现问题?

1 个答案:

答案 0 :(得分:5)

正如Daniel on the mailing list所解释的那样:

  

我的计划是将http2工作基于nghttp2库   (https://github.com/tatsuhiro-t/nghttp2)[...] HTTP2将作为libcurl术语中的“特性”开始,而不是作为单独的协议。

首先,您需要手动安装nghttp2 [1]。

然后,您需要在配置时使用--with-nghttp2显式启用HTTP2支持:

./configure --with-nghttp2=/path/to/nghttp2/install/dir [...]

[1]:在编写本文时,README声明未打包在Ubuntu中,因此您需要自己构建

修改

请在下面找到使用默认选项构建库(不是命令行工具)的基本说明。

要构建nghttp2,首先需要安装其要求(详见nghttp2 documentation page):

# To clone the nghttp2 Github repo
yum install git

# Build essentials
yum install gcc
yum install make
yum install automake
yum install libtool

# Required to build the library
yum install pkgconfig
yum install zlib-devel

完成克隆回购后:

git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2

按照here所述构建库:

autoreconf -i
automake
autoconf
# Note: I assume you want to deploy it under /usr/local
# Feel free to adapt to your needs!
./configure --prefix=/usr/local
make

然后部署它:

make install

如果一切正常,则需要构建libcurl 7.33.0,注意使用./configure --with-nghttp2=/usr/local [...]启用nghttp2。

<强>附加功能

如果您想另外构建应用程序(nghttp,...),则必须在构建nghttp2之前安装其他软件包:

yum install openssl-devel
yum install libevent-devel
yum install libxml2-devel
yum install jansson-devel