7

我正在使用 centos 6.2,我需要在其中一个服务器请求中使用 curl --http2.0,但是在查看http://curl.haxx.se/docs/manpage.html后,我使用的是7.19.6我认为 --http2.0 选项仅支持 curl 7.33.0,所以为了解决这个问题,我按照http://www.linuxfromscratch.org/blfs/view/svn中的步骤安装了 curl 7.33.0 /basicnet/curl.html 安装 curl 后,我尝试使用它,但它仍然给我错误curl(1):unsupported protocol,我使用以下命令检查了我的 curl 版本:curl --version这是给我 :

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,这有什么问题吗?

4

1 回答 1

6

正如丹尼尔在邮件列表中解释的那样:

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

所以首先你需要手动安装nghttp2 [1]。

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

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

[1]:在编写 README 时指出它没有打包在 Ubuntu 中,因此您需要自己构建它

编辑

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

要构建 nghttp2,您首先需要安装它的要求(详见nghttp2 文档页面):

# 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

完成后克隆 repo:

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

按照此处的说明构建库:

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

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

附加功能

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

yum install openssl-devel
yum install libevent-devel
yum install libxml2-devel
yum install jansson-devel
于 2013-11-23T20:56:25.310 回答