Więc buduję openssl
./config
make
sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
Buduję loki
./configure --with-ssl
make
make install
Wygląda na to, że OpenSSL jest zainstalowany poprawnie:
openssl version
OpenSSL 1.0.1g 7 Apr 2014
jednak curl używa starej wersji openssl (1.0.1f zamiast 1.0.1g):
curl --version
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
jak sprawić, by curl używał nowej wersji?
Chcę wypróbować najnowsze wersje, ponieważ walczę z jakimś dziwnym błędem openssl / curl # 1 # 2
Edycja: Próbowałem również ./configure --with-ssl=/usr/local/ssl/include/openssl
, bez powodzenia
Edycja2: Do tej pory próbowałem również:
sudo ./configure --with-ssl --with-libssl-prefix=/usr/local/ssl
./configure --with-ssl=/usr/local/ssl
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl=/usr/local/ssl/include/openssl
bez powodzenia...
configure: error: OpenSSL libs and/or directories were not found where specified!
Proszę zobaczyć moją edycję - nie ma błędu,--with-ssl=/usr/local/ssl/include/openssl
ale używany jest stary openssl. druga opcja konfiguruje zawijanie bez HTTPSopenssl.pc
gdzieś plik , musisz wskazaćPKG_CONFIG_PATH
katalog, w którym znajduje się ten plik (i upewnij się, że maszpkg-config
zainstalowany, oczywiście).--with-ssl
nie ma HTTPS, z--with-ssl
tym rzuca błądconfigure: error: OpenSSL libs and/or directories were not found where specified!
/usr/local/ssl
To wszystko, czego potrzebowałem, aby zbudować curl 7.43 na Ubuntu 15.04
źródło
curl
nie mógł mnie wykryćopenssl
, więc zrobiłem te dokładne krokilibssl-dev
i działało to jak urok!Podczas tego samego ćwiczenia dowiedziałem się, że curl po prostu nie działa z bibliotekami statycznymi openssl. Zawsze szukałem dynamiki, bez względu na to, co robiłem, więc ostatecznie zrobiłem trzy rzeczy, które działały dla mnie
To ostatnie polecenie z flagą -V wyświetli wersję openssl używaną przez curl. Dodałem / usr / local / lib do LD_LIBRARY_PATH, aby upewnić się, że curl używa właściwej wersji libcurl.
źródło
LD_LIBRARY_PATH
co dodałem do bash_profile. Zrobiłem coś podobnego, ale zamiast pierwszego wiersza użyłemexport CFLAGS=-fPIC; ./config shared
(nie włączaj-udostępniaj). Do zwijania użyłem,--with-ssl=/usr/local/ssl
chociaż ścieżka arg mogła być zbędna.To była dla mnie długa i żmudna ścieżka. Godziny i godziny (wiesz jak to jest). Oto, co znalazłem:
W systemie Ubuntu 12.04 / 14.04 musisz ręcznie zainstalować zarówno openssl, jak i curl
Zainstaluj ręcznie openssl 1.0.2g:
JEŚLI CHCESZ NGHTTP2 (opcjonalnie / zalecane):
Ręcznie zainstaluj curl:
Ostatnie kroki
Po
$ curl --version
zakończeniu spróbuj upewnić się, że widzisz tam poprawną wersję openssl. W szczególności openssl> = 1.0.2g (i nghttp2, jeśli zdecydowałeś się na to)cytowania: curl opennssl
źródło
Po kilku godzinach zmagania udało mi się włączyć https z libcurl 7.38 w Ubuntu 15.05
źródło
Udało mi się skompilować curl przy użyciu statycznych bibliotek OpenSSL. To jest wersja tl; dr:
OpenSSL
kędzior
Ta
LIBS="-ldl"
część jest niezbędna.źródło
Kompilacja openssl używa domyślnej konfiguracji generuje tylko bibliotekę statyczną , więc jeśli chcesz używać biblioteki statycznej w curl, możesz to zrobić w następujący sposób:
LIBS="-ldl -lpthread" ./configure --disable-shared --prefix=/usr/local/curl --with-ssl=/usr/local/ssl
Szukałem odpowiedzi stąd .
UWAGA: postępowanie w ten sposób generuje tylko statyczną bibliotekę curl.
źródło
Generalnie podążałem za odpowiedzią Jacksonkr, ale potrzebowałem wszystkich wyżej wymienionych przez innych razem:
--disable-shared
jest opcjonalny, tak myślę, po prostu go potrzebujęźródło