Pertanyaan Bagaimana cara membangun curl dengan openssl terbaru?


Jadi saya membangun openssl

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

Saya membangun ikal

./configure --with-ssl 
make
make install

OpenSSL tampak terpasang dengan benar:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

namun curl menggunakan versi opensl lama (1.0.1f bukannya 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 

cara membuat keriting menggunakan versi baru?

Saya ingin mencoba versi terbaru, karena saya berkelahi dengan beberapa bug opensl / curl yang aneh # 1  # 2

Edit: Saya juga mencoba ./configure --with-ssl=/usr/local/ssl/include/openssl, tidak berhasil

Edit2: Sejauh ini saya juga mencoba:

  • 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

tidak berhasil ...


12
2018-06-02 10:25


asal




Jawaban:


Anda perlu menentukan direktori tempat OpenSSL diinstal (tautan Anda tidak diperlukan dan tidak cukup)

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

EDIT: Atau, Anda dapat mengatur Anda PKG_CONFIG_PATH variabel lingkungan (seperti yang disarankan oleh ./configure --help):

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


10
2018-06-02 10:41



opsi pertama memberi saya configure: error: OpenSSL libs and/or directories were not found where specified! Silakan lihat edit saya - tidak ada kesalahan dengan --with-ssl=/usr/local/ssl/include/openssl tetapi openssl tua digunakan. opsi kedua mengkonfigurasi curl tanpa HTTPS - Peter
Saya mungkin mendapatkan sedikit kesalahan direktori, saya tidak memiliki akses ke kotak Linux sekarang ... Pada dasarnya, instalasi OpenSSL manual Anda meletakkan file openssl.pcsuatu tempat, Anda perlu menunjukkan PKG_CONFIG_PATH ke direktori tempat file itu berada (dan pastikan Anda memilikinya pkg-config dipasang, tentu saja). - fkraiem
Jalur PKG_CONFIG_PATH sudah benar, saya telah menginstal pkg-config juga, tetapi entah bagaimana itu tidak berhasil. tanpa --with-ssltidak ada HTTPS, dengan --with-sslitu melempar kesalahan configure: error: OpenSSL libs and/or directories were not found where specified! - Peter
Di mana dan bagaimana Anda menginstal ssl? Gunakan jalan yang benar. - Panther
@ bodhi.zazen Saya telah menginstal kedua paket Ubuntu dari repositori resmi dan mengkompilasi openssl in /usr/local/ssl - Peter


Apa yang saya temukan, ketika saya sedang melakukan latihan yang sama, adalah bahwa curl tidak bisa bekerja dengan pustaka statis openssl. Itu selalu mencari dinamis, tidak peduli apa yang saya lakukan, jadi akhirnya saya melakukan tiga hal yang berhasil bagi saya

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

Perintah terakhir dengan flag -V akan menampilkan versi openssl yang digunakan oleh curl. Saya telah menambahkan / usr / local / lib ke LD_LIBRARY_PATH untuk memastikan bahwa curl menggunakan versi libcurl yang benar.


5
2018-02-05 18:24



Ini sangat membantu saya LD_LIBRARY_PATH yang telah saya tambahkan ke bash_profile. Saya melakukan sesuatu yang serupa, tetapi sebagai ganti baris pertama, saya menggunakan export CFLAGS=-fPIC; ./config shared (tidak diaktifkan-dibagikan). Untuk ikal, saya menggunakan --with-ssl=/usr/local/ssl meskipun jalan arg mungkin sudah berlebihan. - mahemoff
Saya senang ini berhasil untuk Anda dan ya, path di --with-ssl redundan, karena apa yang Anda berikan adalah lokasi default untuk build. - Oleg Gryb


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

Adalah semua yang saya butuhkan untuk membangun curl 7.43 di ubuntu 15.04


3
2017-08-03 21:09





Ini adalah jalan yang panjang dan sulit bagi saya. Jam dan jam (Anda tahu bagaimana). Inilah yang saya temukan:

Untuk Ubuntu 12.04 / 14.04 kamu harus secara manual instal keduanya openssl dan keriting

Secara manual menginstal 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

JIKA ANDA INGIN NGHTTP2 (opsional / disarankan):

# 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

Secara manual menginstal 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

Langkah Akhir

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

Setelah selesai, cobalah $ curl --version dan pastikan Anda melihat versi yang benar dari openssl di sana. Khusus openssl> = 1.0.2g (dan nghttp2 jika Anda memilih untuk itu)

$ 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 

kutipan: keriting  opennssl


3
2018-03-09 15:11





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

Setelah berjuang beberapa jam saya berhasil mengaktifkan https dengan libcurl 7.38 di ubuntu 15.05


2
2017-12-10 10:31





Saya berhasil mengkompilasi curl menggunakan pustaka OpenSSL statis. Ini adalah versi tl; dr:

OpenSSL

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

keriting

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

Itu LIBS="-ldl" bagian sangat penting.


1
2017-07-22 10:03





Mengkompilasi openssl menggunakan konfigurasi default hanya menghasilkan pustaka statis, jadi, jika Anda ingin menggunakan pustaka statis dalam bentuk ikal, Anda dapat melakukan seperti ini:

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

Saya mencari jawabannya dari sini.

CATATAN: mengikuti cara ini hanya menghasilkan curl static library.


0
2018-01-13 11:14





Saya biasanya mengikuti jawaban Jacksonkr, tetapi saya membutuhkan semua yang disebutkan di atas oleh orang lain bersama-sama:

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

--disable-shared adalah opsional, saya kira, hanya saja saya membutuhkannya


0
2018-05-23 17:24