Wie baue ich Curl mit dem neuesten openssl?

18

Also baue ich openssl

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

Ich baue Locken

./configure --with-ssl 
make
make install

OpenSSL sieht richtig installiert aus:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

Allerdings verwendet curl die alte openssl-Version (1.0.1f statt 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 

Wie macht man Curl mit neuer Version?

Ich möchte die neuesten Versionen testen, da ich mit einem seltsamen OpenSL / CurL-Bug # 1 # 2 kämpfe

Edit: Ich habe es auch versucht ./configure --with-ssl=/usr/local/ssl/include/openssl, kein Erfolg

Edit2: Bisher habe ich auch versucht:

  • 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

Kein Erfolg...

Peter
quelle

Antworten:

13

Sie müssen das Verzeichnis angeben, in dem OpenSSL installiert ist (Ihr Symlink ist weder erforderlich noch ausreichend).

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

BEARBEITEN: Alternativ können Sie Ihre PKG_CONFIG_PATHUmgebungsvariable festlegen (wie von vorgeschlagen ./configure --help):

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

fkraiem
quelle
1
Die erste Option gibt mir configure: error: OpenSSL libs and/or directories were not found where specified!Bitte sehen Sie meine Bearbeitung - es gibt keinen Fehler mit, --with-ssl=/usr/local/ssl/include/opensslaber alte openssl wird verwendet. zweite Option konfiguriert Curl ohne HTTPS
Peter
Möglicherweise habe ich die Verzeichnisse leicht verwechselt, ich habe momentan keinen Zugriff auf eine Linux-Box ... Grundsätzlich müssen Sie bei der manuellen OpenSSL-Installation eine Datei openssl.pcirgendwo ablegen und PKG_CONFIG_PATHauf das Verzeichnis verweisen, in dem sich diese Datei befindet (und sicherstellen, dass Sie haben pkg-confignatürlich installiert).
fkraiem
1
PKG_CONFIG_PATH-Pfad ist korrekt, ich habe pkg-config ebenfalls installiert, aber irgendwie funktioniert es nicht. ohne --with-sslgibt es kein HTTPS, mit dem --with-ssles Fehler wirftconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter
Wo und wie hast du ssl installiert? Verwenden Sie den richtigen Pfad.
Panther
@ bodhi.zazen Ich habe sowohl Ubuntu-Paket aus offiziellen Repositorys installiert als auch openssl in kompiliert/usr/local/ssl
Peter
5

Als ich die gleiche Übung durchlief, stellte ich fest, dass Curl mit statischen OpenSL-Bibliotheken einfach nicht funktionieren kann. Es war immer auf der Suche nach Dynamik, egal was ich tat, also tat ich schließlich drei Dinge, die für mich funktionierten

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

Letzterer Befehl mit dem Flag -V zeigt die von curl verwendete Version von openssl an. Ich habe / usr / local / lib zu LD_LIBRARY_PATH hinzugefügt, um sicherzustellen, dass curl die richtige libcurl-Version verwendet.

Oleg Gryb
quelle
Dies hat mir geholfen, insbesondere LD_LIBRARY_PATHwas ich bash_profile hinzugefügt habe. Ich habe etwas Ähnliches gemacht, aber anstelle der ersten Zeile habe ich export CFLAGS=-fPIC; ./config shared(nicht enable-shared) verwendet. Für Curl habe ich verwendet, --with-ssl=/usr/local/sslobwohl der Pfad arg redundant gewesen sein kann.
Mahemoff
1
Ich bin froh, dass es für Sie funktioniert hat, und ja, der Pfad in --with-ssl ist redundant, da Sie einen Standardspeicherort für den Build angegeben haben.
Oleg Gryb
5
sudo apt-get install libssl-dev
./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

Ist alles was ich brauche um Curl 7.43 auf Ubuntu 15.04 zu bauen

Berto B.
quelle
4

Dies war ein langer und beschwerlicher Weg für mich. Stunden und Stunden (Sie wissen, wie es ist). Folgendes habe ich gefunden:

Für Ubuntu 12.04 / 14.04 müssen Sie sowohl openssl als auch curl manuell installieren

Installieren Sie openssl 1.0.2g manuell:

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

WENN SIE NGHTTP2 WOLLEN (optional / empfohlen):

# 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

Manuelles Installieren von 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

Letzte Schritte

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

Nun, da Sie fertig sind, versuchen Sie $ curl --version, sicherzustellen, dass Sie die richtige Version von openssl dort sehen. Speziell openssl> = 1.0.2g (und nghttp2, wenn Sie sich dafür entschieden haben)

$ 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 

Zitate: curl opennssl

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

Nach einigen Stunden habe ich es geschafft, https mit libcurl 7.38 in Ubuntu 15.05 zu aktivieren

Dev
quelle
1

Ich habe es geschafft, Curl mit statischen OpenSSL-Bibliotheken zu kompilieren. Dies ist die tl; dr-Version:

OpenSSL

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

locken

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

Das LIBS="-ldl"Teil ist wesentlich.

Martin Melka
quelle
0

Das Kompilieren von openssl use default configure generiert nur statische Bibliotheken . Wenn Sie also statische Bibliotheken in curl verwenden möchten, können Sie dies folgendermaßen tun:

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

Ich habe die Antwort von hier gesucht .

HINWEIS: Wenn Sie auf diese Weise vorgehen, wird nur eine statische Curl-Bibliothek erstellt.

pingsoli
quelle
0

Ich folgte im Allgemeinen Jacksonkrs Antwort, aber ich brauchte alle oben genannten Punkte zusammen:

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

--disable-shared ist optional, ich denke, es ist nur ich brauche es

Feodor Benevolenski
quelle