Comment construire curl avec le dernier openssl?


18

Je construis donc openssl

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

Je construis une boucle

./configure --with-ssl 
make
make install

OpenSSL semble installé correctement:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

cependant curl utilise l'ancienne version openssl (1.0.1f au lieu 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 

comment faire utiliser curl nouvelle version?

Je veux essayer les dernières versions, car je me bats avec un bug étrange openssl / curl # 1 # 2

Edit: j'ai aussi essayé ./configure --with-ssl=/usr/local/ssl/include/openssl, sans succès

Edit2: Jusqu'à présent, j'ai également essayé:

  • 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

Sans succès...

Réponses:


13

Vous devez spécifier le répertoire où OpenSSL est installé (votre lien symbolique n'est ni nécessaire ni suffisant)

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

EDIT: Alternativement, vous pouvez définir votre PKG_CONFIG_PATHvariable d'environnement (comme suggéré par ./configure --help):

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


1
la première option me donne configure: error: OpenSSL libs and/or directories were not found where specified!S'il vous plaît voir mon édition - il n'y a pas d'erreur --with-ssl=/usr/local/ssl/include/opensslmais l'ancien openssl est utilisé. deuxième option configure curl sans HTTPS
Peter

J'ai peut-être obtenu des répertoires légèrement erronés, je n'ai pas accès à une boîte Linux pour le moment ... Fondamentalement, votre installation manuelle d'OpenSSL a mis un fichier openssl.pcquelque part, vous devez pointer PKG_CONFIG_PATHvers le répertoire où se trouve ce fichier (et vous assurer vous avez pkg-configinstallé, bien sûr).
fkraiem

1
Le chemin PKG_CONFIG_PATH est correct, j'ai pkg-config installé aussi, mais en quelque sorte cela ne fonctionne pas. sans --with-sslil n'y a pas de HTTPS, avec --with-sslça jette une erreurconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter

Où et comment avez-vous installé SSL? Utilisez le bon chemin.
Panther

@ bodhi.zazen J'ai installé le paquet Ubuntu à partir des référentiels officiels et openssl compilé dans/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

Est-ce tout ce dont j'avais besoin pour construire curl 7.43 sur Ubuntu 15.04


Magnifique. Cela a fonctionné le 19.04. D'une manière ou d'une autre, curlje ne pouvais pas le détecter openssl, alors j'ai fait ces étapes exactes libssl-devet cela a fonctionné comme un charme!
Alex

5

Ce que j'ai découvert, lorsque je faisais le même exercice, c'est que curl ne peut tout simplement pas fonctionner avec les bibliothèques statiques openssl. Il était toujours à la recherche de dynamique, peu importe ce que je faisais, donc finalement j'ai fait trois choses qui ont fonctionné pour moi

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

La dernière commande avec l'indicateur -V affichera la version openssl utilisée par curl. J'ai ajouté / usr / local / lib à LD_LIBRARY_PATH pour m'assurer que curl utilise la bonne version de libcurl.


Cela m'a aidé, en particulier LD_LIBRARY_PATHque j'ai ajouté à bash_profile. J'ai fait quelque chose de similaire, mais au lieu de la première ligne, j'ai utilisé export CFLAGS=-fPIC; ./config shared(pas activé-partagé). Pour curl, j'ai utilisé --with-ssl=/usr/local/sslbien que le chemin arg ait pu être redondant.
mahemoff

1
Je suis content que cela ait fonctionné pour vous et oui, le chemin dans --with-ssl est redondant, car ce que vous avez fourni est un emplacement par défaut pour la construction.
Oleg Gryb du

4

Ce fut un chemin long et ardu pour moi. Heures et heures (vous savez comment c'est). Voici ce que j'ai trouvé:

Pour Ubuntu 12.04 / 14.04, vous devez installer manuellement à la fois openssl et curl

Installez manuellement 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

SI VOUS VOULEZ NGHTTP2 (facultatif / recommandé):

# 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

Installez manuellement curl:

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

Étapes finales

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

Maintenant que vous avez terminé, essayez de $ curl --versionvous assurer de voir la bonne version de openssl. Plus précisément openssl> = 1.0.2g (et nghttp2 si vous l'avez opté)

$ 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 

citations: curl opennssl


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

Après quelques heures de difficulté, j'ai réussi à activer https avec libcurl 7.38 dans Ubuntu 15.05


1

J'ai réussi à compiler curl en utilisant des bibliothèques OpenSSL statiques. Voici la version tl; dr:

OpenSSL

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

boucle

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

La LIBS="-ldl"pièce est essentielle.


0

La compilation d'OpenSL à l'aide de la configuration par défaut génère uniquement une bibliothèque statique , donc, si vous souhaitez utiliser la bibliothèque statique en boucle, vous pouvez faire ceci:

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

J'ai cherché la réponse d' ici .

REMARQUE: suivre cette méthode génère uniquement une bibliothèque statique curl.


0

J'ai généralement suivi la réponse de Jacksonkr, mais j'avais besoin de tout ce qui précède mentionné par d'autres ensemble:

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

--disable-shared est facultatif, je suppose, c'est juste que j'en ai besoin

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.