最新のopensslでcurlをビルドする方法は?


18

だから私はopensslを構築します

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

カールを作成します

./configure --with-ssl 
make
make install

OpenSSLは正しくインストールされているように見えます。

openssl version
OpenSSL 1.0.1g 7 Apr 2014

ただし、curlは古いopensslバージョン(1.0.1gではなく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 

カールが新しいバージョンを使用する方法

私はいくつかの奇妙なopenssl / curlバグ#1 #2と戦っているので、最新バージョンを試したい

編集:私も試しました ./configure --with-ssl=/usr/local/ssl/include/openssl、成功しません

編集2:これまで私も試しました:

  • 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

失敗...

回答:


13

OpenSSLがインストールされているディレクトリを指定する必要があります(シンボリックリンクは必要でも十分でもありません)

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

編集:または、PKG_CONFIG_PATH環境変数を設定することもできます(推奨./configure --help)。

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


1
最初のオプションは私のconfigure: error: OpenSSL libs and/or directories were not found where specified!編集を参照してください-エラーはありません--with-ssl=/usr/local/ssl/include/opensslが、古いopensslが使用されます。2番目のオプションは、HTTPSなしでcurlを構成します
Peter

私は基本的に、あなたのマニュアルはOpenSSLのインストールは、ファイル入れて、私は...今のLinuxボックスへのアクセスを持っていない、少し間違ったディレクトリを得ていることがopenssl.pcどこかを、あなたはポイントを必要とするPKG_CONFIG_PATH、そのファイルがあるディレクトリに(と確認してくださいpkg-configもちろんインストール済みです)。
fkraiem 14年

1
PKG_CONFIG_PATHパスは正しいです。pkg-configもインストールしていますが、どういうわけか機能しません。なし--with-sslで何のHTTPSは、ありません--with-ssl、それは誤りスローconfigure: error: OpenSSL libs and/or directories were not found where specified!
ピーター・

sslをどこでどのようにインストールしましたか?正しいパスを使用してください。
パンサー14年

@ bodhi.zazen公式リポジトリからUbuntuパッケージとコンパイルされたopensslの両方をインストールしました/usr/local/ssl
Peter

5

同じ演習を行っていたときにわかったのは、curlはopenssl静的ライブラリでは動作しないということです。私が何をしていても、常にダイナミックを探していたので、最終的には私のために働く3つのことをしました

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フラグを指定した後者のコマンドは、curlが使用するopensslバージョンを表示します。/ usr / local / libをLD_LIBRARY_PATHに追加して、curlが正しいlibcurlバージョンを使用するようにしました。


これは、特にLD_LIBRARY_PATHbash_profileに追加したものに役立ちました。同様のことをしましたが、最初の行の代わりにexport CFLAGS=-fPIC; ./config shared(enable-sharedではなく)を使用しました。curlでは--with-ssl=/usr/local/ssl、path argが冗長だったかもしれませんが使用しました。
mahemoff

1
私がそれがあなたのために働いてうれしいです、そして、はい、あなたが提供したものがビルドのためのデフォルトの場所であるので、-with-sslのパスは冗長です。
オレググリブ

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

Ubuntu 7.04でcurl 7.43をビルドするために必要なすべて


4

これは私にとって長く困難な道のりでした。時間と時間(ご存知のとおり)。私が見つけたものは次のとおりです。

以下のためのUbuntu 12.04 / 14.04、あなたがする必要が手動で両方のインストールのopensslカールを

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

NGHTTP2を希望する場合(オプション/推奨):

# 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

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

最終ステップ

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

完了したら$ curl --version、そこに正しいバージョンのopensslが表示されることを確認してください。具体的には、openssl> = 1.0.2g(および選択した場合は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 

引用:curl opennssl


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

数時間苦労した後、ubuntu 15.05でlibcurl 7.38でhttpsを有効にすることができました


1

静的OpenSSLライブラリを使用してcurlをコンパイルできました。これはtl; drバージョンです。

OpenSSL

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

カール

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

このLIBS="-ldl"部分は不可欠です。


0

openssl use default configureをコンパイルすると、静的ライブラリのみが生成されるため、curlで静的ライブラリを使用する場合は、次のようにできます。

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

ここから答えを探しました。

注:この方法に従うと、curl静的ライブラリのみが生成されます。


0

私は通常、Jacksonkrの答えに従いましたが、他の人が言及した上記のすべてを一緒に必要としました。

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

--disable-shared オプションです、私は推測します;それはちょうど私がそれを必要とします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.