En son openssl ile curl nasıl oluşturulur?


18

Bu yüzden openssl inşa ediyorum

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

Bukle yaptım

./configure --with-ssl 
make
make install

OpenSSL doğru kurulmuş görünüyor:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

ancak curl eski openssl sürümünü kullanır (1.0.1g yerine 1.0.1f):

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 

curl yeni sürümü nasıl kullanılır?

En yeni sürümleri denemek istiyorum, çünkü bazı garip openssl / curl hatası # 1 # 2 ile savaşıyorum

Düzenleme: Ben de denedim ./configure --with-ssl=/usr/local/ssl/include/openssl, başarı yok

Edit2: Şimdiye kadar ben de denedim:

  • 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

Başarı yok...

Yanıtlar:


13

OpenSSL'nin kurulu olduğu dizini belirtmeniz gerekir (sembol bağlantınız gerekli veya yeterli değildir)

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

EDIT: Alternatif olarak, PKG_CONFIG_PATHortam değişkeninizi ayarlayabilirsiniz (önerdiği gibi ./configure --help):

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


1
ilk seçenek bana verir configure: error: OpenSSL libs and/or directories were not found where specified!Lütfen benim düzenleme bakın - ile ilgili bir hata yok --with-ssl=/usr/local/ssl/include/opensslama eski openssl kullanılır. ikinci seçenek HTTPS olmadan kıvrımı yapılandırır
Peter

Dizinleri biraz yanlış almış olabilirim, şu anda bir Linux kutusuna erişimim yok ... Temel olarak, manuel OpenSSL kurulumunuz bir openssl.pcyere bir dosya koydu , PKG_CONFIG_PATHbu dosyanın olduğu dizine işaret etmeniz (ve emin olun Eğer var pkg-config) elbette yüklü.
fkraiem

1
PKG_CONFIG_PATH yolu doğru, ben de yüklü pkg-config var, ama bir şekilde çalışmıyor. --with-sslHTTPS olmadan , --with-sslhata atıyorconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter

SSL'yi nereye ve nasıl kurdunuz? Doğru yolu kullanın.
Panther

@ bodhi.zazen Ubuntu paketini resmi depolardan yükledim ve openssl'i derledim/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

Ubuntu 15.04 üzerinde kıvrılma 7.43 inşa etmek için gereken tek şey


Güzel. Bu 19.04'te çalıştı. Bir şekilde curlbenim tespit edemedi openssl, bu yüzden bu kesin adımları yaptım libssl-devve çekicilik gibi çalıştı!
Alex

5

Aynı alıştırmadan geçerken öğrendiğim şey, curl'un openssl statik kütüphaneleriyle çalışamayacağıdır. Ne yaptığımdan bağımsız olarak her zaman dinamik arayışındaydı, bu yüzden sonunda benim için çalışan üç şey yaptım

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

-V işaretli ikinci komut, curl tarafından kullanılan openssl sürümünü gösterir. Curl'un doğru libcurl sürümünü kullandığından emin olmak için LD_LIBRARY_PATH dizinine / usr / local / lib ekledim.


Bu bana yardımcı oldu, özellikle LD_LIBRARY_PATHde bash_profile'a ekledim. Benzer bir şey yaptım, ancak ilk satır yerine export CFLAGS=-fPIC; ./config shared(enable-shared değil) kullandım. Kıvrılma --with-ssl=/usr/local/ssliçin yol argümanı gereksiz olsa da kullandım .
mahemoff

1
Sizin için çalıştı sevindim ve evet, --with-ssl içindeki yol gereksizdir, çünkü sağladığınız şey yapı için varsayılan bir konumdur.
Oleg Gryb

4

Bu benim için uzun ve zorlu bir yoldu. Saatler ve saatler (nasıl olduğunu biliyorsunuz). İşte bulduğum:

İçin Ubuntu 12.04 / 14.04 Mecbur elle hem yüklemek openssl ve curl

El ile 1.0.2g openssl yükleyin:

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

NGHTTP2 İSTİYORSANIZ (isteğe bağlı / önerilen):

# 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

Manuel olarak curl yükleyin:

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

Son Adımlar

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

Artık bittiğine göre, $ curl --versionorada doğru openssl sürümünü gördüğünüzden emin olun. Özellikle = 1.0.2g (ve bunu seçtiyseniz nghttp2)

$ 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 

alıntılar: curl opennssl


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

Birkaç saat uğraştıktan sonra ubuntu 15.05'te libcurl 7.38 ile https'yi etkinleştirmeyi başardım


1

Statik OpenSSL kütüphanelerini kullanarak curl derlemeyi başardım. Bu tl; dr sürümüdür:

OpenSSL

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

bukle

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

LIBS="-ldl"Bölüm esastır.


0

Openssl kullanmak varsayılan yapılandırma derleme yalnızca statik kütüphane üretir , bu nedenle, curl'de statik kütüphane kullanmak istiyorsanız, bunu yapabilirsiniz:

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

Buradan cevabı aradım .

NOT: bu yolu izleyerek yalnızca curl statik kitaplığı oluşturur.


0

Genellikle Jacksonkr'ın cevabını takip ettim, ancak yukarıda belirtilenlerin hepsine birlikte ihtiyacım vardı:

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

--disable-shared isteğe bağlıdır, sanırım, sadece ihtiyacım var

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.