Como construir curl com o openssl mais recente?

Como construir curl com o openssl mais recente?

Então eu construo o openssl

./config
make
sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

Eu construo cachos

./configure --with-ssl 
make
make install

OpenSSL parece instalado corretamente:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

no entanto, curl usa a versão antiga do openssl (1.0.1f em vez de 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 

como fazer o curl usar a nova versão?

Quero experimentar as versões mais recentes, porque estou lutando com algum bug estranho de openssl/curl#1 #2

Edit: Eu também tentei ./configure --with-ssl=/usr/local/ssl/include/openssl, sem sucesso

Edit2: Até agora eu também tentei:

  • 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

sem sucesso...

Responder1

Você precisa especificar o diretório onde o OpenSSL está instalado (seu link simbólico não é necessário nem suficiente)

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

EDIT: Alternativamente, você pode definir sua PKG_CONFIG_PATHvariável de ambiente (conforme sugerido por ./configure --help):

PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure

Responder2

sudo apt-get install libssl-dev
./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

É tudo que eu precisava para construir o curl 7.43 no Ubuntu 15.04

Responder3

O que descobri, quando estava fazendo o mesmo exercício, é que o curl simplesmente não funciona com bibliotecas estáticas do openssl. Estava sempre em busca de dinâmica, não importa o que eu estivesse fazendo, então acabei fazendo três coisas que funcionaram para mim

Configured openssl with enable-shared: ./config enable-shared
Configured curl with openssl: ./configure --with-ssl
Used LD_LIBRARY_PATH: LD_LIBRARY_PATH=/usr/local/lib:/usr/local/ssl/lib /usr/local/bin/curl -V

O último comando com sinalizador -V mostrará a versão do openssl usada pelo curl. Adicionei /usr/local/lib a LD_LIBRARY_PATH para garantir que o curl use a versão correta do libcurl.

Responder4

./configure --with-ssl=/usr/lib/ssl --libdir=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

Depois de lutar algumas horas consegui habilitar https com libcurl 7.38 no Ubuntu 15.05

informação relacionada