
Использование curl с поддержкой http/2 в Unix/Linux
Недавно, понадобилось использовать curl с поддержкой http/2. Я поискал материал по интернету и решил создать свою статью «Использование curl с поддержкой http/2 в Unix/Linux» и рассказать как я включил данную поддержку.
Примером, была взята Debian ОС, по этому, буду говорить что и как я делал. Если будут проблемы с настройкой для другой Unix/Linux ОС — пишите и я вам помогу настроить.
Устанавливаем необходимый софт:
# apt-get install -y tmux curl vim wget htop git
Сейчас с помощью curl проверяем что действительно нет поддержки http/2:
root@debian:/usr/local/src# curl -I https://nghttp2.org/ HTTP/1.1 200 OK Date: Sun, 24 Apr 2016 01:30:31 GMT Content-Type: text/html Last-Modified: Sat, 16 Apr 2016 14:56:04 GMT Etag: "57125284-1a0a" Accept-Ranges: bytes Content-Length: 6666 X-Backend-Header-Rtt: 0.001173 Strict-Transport-Security: max-age=31536000 Server: nghttpx nghttp2/1.10.0-DEV Via: 2 nghttpx x-frame-options: SAMEORIGIN x-xss-protection: 1; mode=block x-content-type-options: nosniff root@debian:/usr/local/src#
Если попытаться использовать HTTP 2 протокол, то выдаст ошибку протокола:
$ curl --http2 -I https://nghttp2.org/ # Unsupported protocol error
Или:
curl: (1) Unsupported protocol
Установка nghttp2 для поддержки curl с http/2
Но для начала устанавливаем необходимое ПО.
Для Debian/Ubuntu:
# apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \ zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \ libjemalloc-dev cython python3-dev python-setuptools -y
Устанавливаем nghttp2 с исходного кода
Клонируем проект:
# cd /usr/local/src && git clone https://github.com/tatsuhiro-t/nghttp2.git
Переходим в папку:
# cd nghttp2
Выполняем:
# autoreconf -i && automake && autoconf && ./configure && make && make install
Обновляем curl до последней версии.
Ставим ПО:
# apt-get build-dep curl
Качаем свежий curl:
# cd /usr/local/src && wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2 && tar -xvjf curl-7.46.0.tar.bz2 && cd curl-7.46.0
Собираем:
./configure --with-nghttp2=/usr/local --with-ssl && make && make install && ldconfig
Проверяем что вышло:
root@debian:/usr/local/src/curl-7.46.0# curl --http2 -I nghttp2.org curl: /usr/local/lib/libcurl.so.4: no version information available (required by curl) HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: h2c HTTP/2.0 200 date:Sun, 24 Apr 2016 01:43:05 GMT content-type:text/html last-modified:Sat, 16 Apr 2016 14:56:04 GMT etag:"57125284-1a0a" accept-ranges:bytes content-length:6666 x-backend-header-rtt:0.001002 server:nghttpx nghttp2/1.10.0-DEV via:2 nghttpx x-frame-options:SAMEORIGIN x-xss-protection:1; mode=block x-content-type-options:nosniff
Если получите какую-то ошибку, то используйте, чтобы указать curl где лежат библиотеки:
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/curl --http2 -I nghttp2.org
Вот и все, тема «Использование curl с поддержкой http/2 в Unix/Linux» завершена.
Не получилось настроить. Debian 8
При команде ./configure make
выдает ошибку
checking build system type… Invalid configuration `make’: machine `make’ not recognized
configure: error: /bin/bash ./config.sub make failed