2015-06-25 10 views
13

Po wykonaniu kroków od here, nadal używam Unsupported Protocol podczas korzystania z opcji curl --http2. Podobnie ustawienie CURLOPT_HTTP_VERSION na CURL_HTTP_VERSION_2_0 powoduje, że program komunikuje się za pomocą protokołu HTTP/1.1, a nie HTTP/2.HTTP2 z CURL daje "Unsupported Protocol"

Platforma: Ubuntu 15.04 na VMware Player 7.

Mam zainstalowany nghttp2-1.0.4 z --prefix=/usr/local, stąd libnghttp2 * znajduje się w /usr/local/lib..

Jest to kod, aby skonfigurować Curl-7.43.0:

./configure --with-nghttp2=/usr/local 

Wynik pokazuje, że HTTP2 jest włączona:

HTTP2 support: enabled (nghttp2) 

After make i sudo make install, następujące zwroty Unsupported Protocol:

curl --http2 https://http2.akamai.com 

Wersja zwinięta nie pokazuje nghttp2 rozwiązywane są:

curl 7.43.0 (i686-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3 
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP 

Potem poszliśmy za radą z here, że muszę mieć OpenSSL 1.0.2 lub wyższej. Po zainstalowaniu, że w/opt/openssl, ja przekonfigurować:

./configure --with-nghttp2=/usr/local --with-ssl=/opt/openssl/lib 

Po make i sudo make install, wszystkie problemy pozostają te same. O dziwo, curl --version nadal zwraca te same informacje, co powyżej, a OpenSSL/1.0.1f nie jest jeszcze uaktualniony.

Każda pomoc, która pozwala mi z powodzeniem używać opcji --http2 jest bardzo doceniana.

Odpowiedz

4

Wygląda na to, że nie łączysz się z odpowiednią wersją curl, przynajmniej w czasie wykonywania. To właśnie oznacza wyjście libcurl/7.38.0. Mój ma tam wyższy numer wersji. Wypróbuj

LD_LIBRARY_PATH=/usr/local/lib curl <whatever> 

jako polecenie. Lub po prostu, aby upewnić się:

ldd `which curl` 

i zwrócić uwagę na zależności, które pojawiają się na liście.

+1

Drugie polecenie powyżej pokazuje, że nadal używam domyślnej biblioteki/lib/i386-liux-gnu. Ustawienie ścieżki biblioteki jako pierwszego powyższego kodu rozwiązało problem. Curl mówi teraz http2. Dzięki! – Curioso

+0

Jak to było zalecane [tutaj] (http://stackoverflow.com/questions/12636536/install-curl-with-openssl), polecenie 'sudo' przed'./Configure'. Bez 'sudo' moje nie działało. – Curioso

+0

Nadal mam problemy. ~~~~ autoreconf -i automake autoconf sudo ./configure --prefix =/usr/local sudo make sudo make install LD_LIBRARY_PATH =/usr/local/lib curl --http2 http: // google.com curl: (1) Nieobsługiwany protokół ~~~~ – user1928764