Come costruire il ricciolo con l'ultimo openssl?


18

Quindi costruisco openssl

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

Costruisco il ricciolo

./configure --with-ssl 
make
make install

OpenSSL sembra installato correttamente:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

comunque curl usa la vecchia versione di openssl (1.0.1f invece di 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 

come fare arricciare utilizzare la nuova versione?

Voglio provare le versioni più recenti, perché sto combattendo con qualche strano bug openssl / curl # 1 # 2

Modifica: ho anche provato ./configure --with-ssl=/usr/local/ssl/include/openssl, senza successo

Edit2: Finora ho anche provato:

  • 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

nessun successo...

Risposte:


13

Devi specificare la directory in cui è installato OpenSSL (il tuo link simbolico non è né necessario né sufficiente)

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

EDIT: in alternativa, è possibile impostare la PKG_CONFIG_PATHvariabile di ambiente (come suggerito da ./configure --help):

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


1
la prima opzione mi dà configure: error: OpenSSL libs and/or directories were not found where specified!Si prega di vedere la mia modifica - non c'è nessun errore --with-ssl=/usr/local/ssl/include/opensslma viene utilizzato il vecchio openssl. la seconda opzione configura l'arricciatura senza HTTPS
Peter

Potrei aver sbagliato leggermente le directory, non ho accesso a un box Linux in questo momento ... Fondamentalmente, l'installazione OpenSSL manuale ha messo un file openssl.pcda qualche parte, è necessario puntare PKG_CONFIG_PATHalla directory in cui si trova quel file (e assicurarsi hai pkg-configinstallato, ovviamente).
fkraiem,

1
Il percorso PKG_CONFIG_PATH è corretto, ho installato anche pkg-config, ma in qualche modo non funziona. senza --with-sslnon c'è HTTPS, con --with-sslgetta erroreconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter

Dove e come hai installato ssl? Usa il percorso corretto.
Pantera

@ bodhi.zazen Ho installato entrambi i pacchetti Ubuntu da repository ufficiali e compilato openssl in/usr/local/ssl
Peter

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

È tutto ciò di cui avevo bisogno per creare curl 7.43 su Ubuntu 15.04


Bellissimo. Questo ha funzionato il 19.04. In qualche modo curlnon sono riuscito a rilevare il mio openssl, quindi ho fatto questi esatti passaggi libssl-deve ha funzionato come un incantesimo!
Alex

5

Quello che ho scoperto, durante lo stesso esercizio, è che l'arricciatura semplicemente non può funzionare con le librerie statiche di openssl. È sempre stato alla ricerca di dinamiche, non importa quello che stavo facendo, quindi alla fine ho fatto tre cose che hanno funzionato per me

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

Quest'ultimo comando con -V flag mostrerà la versione di openssl usata da curl. Ho aggiunto / usr / local / lib a LD_LIBRARY_PATH per assicurarmi che curl utilizzi la versione libcurl corretta.


Questo mi ha aiutato, in particolare LD_LIBRARY_PATHche ho aggiunto a bash_profile. Ho fatto qualcosa di simile, ma invece della prima riga, ho usato export CFLAGS=-fPIC; ./config shared(non abilitato-condiviso). Per il ricciolo, ho usato --with-ssl=/usr/local/sslanche se il percorso arg potrebbe essere stato ridondante.
mahemoff,

1
Sono contento che abbia funzionato per te e sì, il percorso in --with-ssl è ridondante, perché quello che hai fornito è un percorso predefinito per la build.
Oleg Gryb,

4

Questa è stata una strada lunga e ardua per me. Ore e ore (sai com'è). Ecco cosa ho trovato:

Per Ubuntu 12.04 / 14.04 devi installare manualmente sia openssl che curl

Installa manualmente openssl 1.0.2g:

sudo apt-get install make # (Install compiling library Make)
wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz # (Download the latest OpenSSL 1.0.2g binaries)
tar -xzvf openssl-1.0.2g.tar.gz # (Extract the tar ball to the local directory)
cd openssl-1.0.2g # (Enter extracted OpenSSL directory)
sudo ./config # (Configure binaries for compiling)
sudo make install # (install configured binaries)
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl` # (This will create a sym link to the new binaries)
openssl version -v

SE VUOI NGHTTP2 (opzionale / raccomandato):

# Get build requirements
# Some of these are used for the Python bindings
# this package also installs
sudo 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

# Build nghttp2 from source
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
sudo make install

Installa manualmente l'arricciatura:

cd ~
sudo apt-get build-dep curl
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 --with-ssl --with-libssl-prefix=/usr/local/ssl # This is the line I had the most trouble with, especially figure out --with-libssl-prefix
make
sudo make install
sudo ldconfig

Passi finali

$ sudo ldconfig
$ sudo service apache2 restart # if you're using apache

Ora che hai finito, prova $ curl --versione assicurati di vedere la versione corretta di openssl lì dentro. In particolare openssl> = 1.0.2g (e nghttp2 se lo hai scelto)

$ curl --version
curl 7.50.2 (x86_64-pc-linux-gnu) libcurl/7.50.2 OpenSSL/1.0.2k zlib/1.2.8 nghttp2/1.21.0-DEV
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets 

citazioni: curl opennssl


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

Dopo alcune ore sono riuscito ad abilitare https con libcurl 7.38 in Ubuntu 15.05


1

Sono riuscito a compilare l'arricciatura usando le librerie OpenSSL statiche. Questa è la versione tl; dr:

OpenSSL

./config no-shared --prefix=$PWD/_installdir
make depend && make && make install

arricciare

LIBS="-ldl" ./configure --prefix=$PWD/_installdir --with-ssl=/something/opensslrootdir/_installdir --disable-shared
make && make install

La LIBS="-ldl"parte è essenziale.


0

La compilazione di openssl usa la configurazione di default genera solo una libreria statica , quindi, se vuoi usare una libreria statica in curl, puoi fare così:

LIBS="-ldl -lpthread" ./configure --disable-shared --prefix=/usr/local/curl --with-ssl=/usr/local/ssl

Ho cercato la risposta da qui .

NOTA: in questo modo viene generata solo la libreria statica arricciata.


0

In genere seguivo la risposta di Jacksonkr, ma avevo bisogno di tutto quanto sopra menzionato da altri insieme:

LIBS="-ldl" PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl --with-libssl-prefix=/usr/local/ssl --disable-shared

--disable-shared è facoltativo, immagino, è solo che ne ho bisogno

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.