Bagaimana cara membuat ikal dengan openssl terbaru?

18

Jadi saya membangun openssl

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

Saya membuat ikal

./configure --with-ssl 
make
make install

OpenSSL terlihat terpasang dengan benar:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

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

bagaimana cara membuat ikal menggunakan versi baru?

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

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

Sunting2: 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 ...

Peter
sumber

Jawaban:

13

Anda perlu menentukan direktori tempat OpenSSL diinstal (symlink Anda tidak perlu atau tidak mencukupi)

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

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

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

fkraiem
sumber
1
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/openssltetapi openssl lama digunakan. Opsi kedua mengkonfigurasi ikal tanpa HTTPS
Peter
Saya mungkin mendapatkan direktori yang sedikit salah, saya tidak memiliki akses ke kotak Linux sekarang ... Pada dasarnya, instalasi OpenSSL manual Anda meletakkan file di openssl.pcsuatu tempat, Anda harus menunjuk PKG_CONFIG_PATHke direktori di mana file itu berada (dan pastikan Anda telah pkg-configmenginstal, tentu saja).
fkraiem
1
Path PKG_CONFIG_PATH benar, saya telah menginstal pkg-config juga, tapi entah bagaimana itu tidak berhasil. tanpa --with-ssltidak ada HTTPS, dengan --with-sslitu melempar kesalahanconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter
Di mana dan bagaimana Anda menginstal ssl? Gunakan jalur yang benar.
Panther
@ bodhi.zazen Saya telah menginstal kedua paket Ubuntu dari repositori resmi dan kompilasi 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

Apakah yang saya butuhkan untuk membangun curl 7.43 di ubuntu 15.04

Berto B.
sumber
Cantik. Ini bekerja pada 19.04. Entah bagaimana curltidak bisa mendeteksi saya openssl, jadi saya melakukan langkah-langkah yang tepat ini libssl-devdan itu bekerja seperti pesona!
Alex
5

Apa yang saya temukan, ketika saya menjalani latihan yang sama, adalah bahwa ikal tidak dapat bekerja dengan openssl perpustakaan statis. Itu selalu mencari dinamis, tidak peduli apa yang saya lakukan, jadi akhirnya saya melakukan tiga hal yang bekerja untuk 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 tepat.

Oleg Gryb
sumber
Ini membantu saya, terutama LD_LIBRARY_PATHyang saya tambahkan ke bash_profile. Saya melakukan sesuatu yang serupa, tetapi alih-alih baris pertama, saya menggunakan export CFLAGS=-fPIC; ./config shared(tidak mengaktifkan-bagi). Untuk curl, saya menggunakan --with-ssl=/usr/local/sslmeskipun path arg mungkin sudah berlebihan.
mahemoff
1
Saya senang itu berhasil untuk Anda dan ya, path --with-ssl berlebihan, karena apa yang Anda berikan adalah lokasi default untuk build.
Oleg Gryb
4

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

Untuk Ubuntu 12.04 / 14.04 Anda harus menginstal secara manual openssl dan curl

Instal secara manual 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 / direkomendasikan):

# 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

Instal curl secara manual:

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 Terakhir

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

Sekarang setelah Anda selesai, coba $ curl --versiondan pastikan Anda melihat versi openssl yang benar di sana. Secara khusus openssl> = 1.0.2g (dan nghttp2 jika Anda memilihnya)

$ 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: ikal opennssl

Jacksonkr
sumber
2
./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

Dev
sumber
1

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

ikal

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

Bagian LIBS="-ldl"itu penting.

Martin Melka
sumber
0

Mengkompilasi openssl menggunakan konfigurasi default hanya menghasilkan pustaka statis , jadi, jika Anda ingin menggunakan pustaka statis di curl, Anda dapat melakukannya 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 perpustakaan statis ikal.

pingsoli
sumber
0

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, kurasa, hanya saja aku membutuhkannya

Feodor Benevolenski
sumber