Alors je construis openssl
./config
make
Sudo make install
Sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
Je construis curl
./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 de 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 pour utiliser curl nouvelle version?
Je veux essayer les dernières versions, car je me bats avec un étrange bogue openssl/curl # 1# 2
Edit: j'ai aussi essayé ./configure --with-ssl=/usr/local/ssl/include/openssl
, sans succès
Edit2: Jusqu'ici j'ai aussi 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...
Vous devez spécifier le répertoire dans lequel OpenSSL est installé (votre lien symbolique n'est ni nécessaire ni suffisant)
./configure --with-ssl=/usr/local/ssl
EDIT: vous pouvez également définir votre variable d’environnement PKG_CONFIG_PATH
(comme suggéré par ./configure --help
):
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure
Sudo apt-get install libssl-dev
./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
Sudo make
Sudo make install
Est-ce que tout ce dont j'avais besoin pour construire curl 7.43 sur Ubuntu 15.04
Ce que j’ai découvert, en effectuant le même exercice, c’est que curl ne peut tout simplement pas fonctionner avec les bibliothèques statiques openssl. C'était toujours à la recherche de dynamique, peu importe ce que je faisais, alors j'ai finalement 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'option -V indiquera 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.
Ce fut un chemin long et ardu pour moi. Heures et heures (vous savez ce que c'est). Voici ce que j'ai trouvé:
Pour Ubuntu 12.04/14.04 vous devez manuellement installer les deux openssl et curl
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
# 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
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
$ Sudo ldconfig
$ Sudo service Apache2 restart # if you're using Apache
Maintenant que vous avez terminé, essayez $ curl --version
et assurez-vous que la version correcte de openssl y figure. Openssl> = 1.0.2g (et nghttp2 si vous avez opté pour cela)
$ 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
./configure --with-ssl=/usr/lib/ssl --libdir=/usr/lib/x86_64-linux-gnu
Sudo make
Sudo make install
Après avoir lutté quelques heures, j'ai réussi à activer https avec libcurl 7.38 dans Ubuntu 15.05.
J'ai réussi à compiler curl en utilisant des bibliothèques OpenSSL statiques. Ceci est la version tl; dr:
OpenSSL
./config no-shared --prefix=$PWD/_installdir
make depend && make && make install
curl
LIBS="-ldl" ./configure --prefix=$PWD/_installdir --with-ssl=/something/opensslrootdir/_installdir --disable-shared
make && make install
La partie LIBS="-ldl"
est essentielle.
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:
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
La compilation de openssl utilise la configuration par défaut ne génère que la bibliothèque statique . Par conséquent, si vous souhaitez utiliser la bibliothèque statique en boucle, procédez comme suit:
LIBS="-ldl -lpthread" ./configure --disable-shared --prefix=/usr/local/curl --with-ssl=/usr/local/ssl
J'ai cherché la réponse de ici .
NOTE: cette procédure ne génère que la bibliothèque statique curl.