web-dev-qa-db-ja.com

Apacheをコンパイルできません:「エラー、SSL / TLSライブラリが見つからないか使用できません」

  • Arch Linux 2011.08.19(Linux 3.4.2 i686)
  • Apache 2.2.22→2.2.22(再コンパイルと再インストール)
  • OpenSSL 1.0.1.c-1

これらの詳細はおそらく無関係ですが、私はyaourtをCustomizepkgと一緒に使用して、利用可能なアップグレードがあるたびにソースからApacheをビルドしているため、手動でPKGBUILDを編集せずにsuexec docrootを必要なものに変更できます。

過去には、これは完璧に機能していました。ただし、何らかの理由でApacheがコンパイルされなくなったようです。完全なシステムアップグレードを実行しただけなので、何か問題があるかもしれません。

変更されたPKGBUILDの構成行は次のとおりです。

../configure --enable-layout=Arch \
    --enable-modules=all \
    --enable-mods-shared=all \
    --enable-so \
    --enable-suexec \
    --with-suexec-caller=http \
    --with-suexec-docroot=/srv/www \
    --with-suexec-logfile=/var/log/httpd/suexec.log \
    --with-suexec-bin=/usr/sbin/suexec \
    --with-suexec-uidmin=99 --with-suexec-gidmin=99 \
    --enable-ldap --enable-authnz-ldap \
    --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
    --enable-ssl --with-ssl \
    --enable-deflate --enable-cgid \
    --enable-proxy --enable-proxy-connect \
    --enable-proxy-http --enable-proxy-ftp \
    --enable-dbd \
    --with-apr=/usr/bin/apr-1-config \
    --with-apr-util=/usr/bin/apu-1-config \
    --with-pcre=/usr \
    --with-mpm=${mpm}

私がビルドしようとすると、OpenSSLのものに到達するまで問題なく動作するようです。

mkdir modules/ssl
checking whether to enable mod_ssl... checking dependencies
checking for SSL/TLS toolkit base... none
checking for OpenSSL version... checking openssl/opensslv.h usability... yes
checking openssl/opensslv.h presence... yes
checking for openssl/opensslv.h... yes
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
OK
  forcing SSL_LIBS to "-lssl -lcrypto  "
  adding "-lssl" to LIBS
  adding "-lcrypto" to LIBS
checking openssl/engine.h usability... yes
checking openssl/engine.h presence... yes
checking for openssl/engine.h... yes
checking for SSLeay_version... no
checking for SSL_CTX_new... no
checking for ENGINE_init... no
checking for ENGINE_load_builtin_engines... no
checking for SSL_set_cert_store... no
configure: error: ... Error, SSL/TLS libraries were missing or unusable
==> ERROR: A failure occurred in build().
    Aborting...
==> ERROR: Makepkg was unable to build Apache.
==> Restart building Apache ? [y/N]
==> -------------------------------
==> 

ぐるぐる回って、多くの人が解決策がexport LDFLAGS=-ldlですが、ビルドスクリプトで設定したか、bashプロファイルで設定したかに関係なく、これは私には影響がありませんでした。

7
Hugh Guiney

他のGoogle検索では、次のようないくつかの環境変数を設定する可能性があります。

$ env LDFLAGS=-ldl

OR

$ export LIBS=-ldl

最初の1つは失敗し、同じエラーが表示されましたが、2つ目は機能しました。

それが原因で最初に機能しない場合は、コマンドを1行で実行する必要があります。これはLDFLAGS変数のランタイムを取得するため、保存されません。

例:env LDFLAGS = "-ldl"\./configure --prefix =/some/path ...

4
antimo

Opensslを0.9.8zbから1.0.1iにアップグレードするときにも同じ問題が発生しました。

$/tmp/src/openssl-1.0.1i/ ./config --prefix=/usr/local/openssl -fPIC
$/tmp/src/openssl-1.0.1i/ make test
$/tmp/src/openssl-1.0.1i/ Sudo make install

$/tmp/src/httpd-2.2.27/ ./config --enable-so --enable-ssl=shared --with-ssl=/usr/local/openssl
...
$configure: error: ... Error, SSL/TLS libraries were missing or unusable

環境を設定するソリューションでは、表示されたエラーメッセージは修正されません。

私の解決策は:

$/tmp/src/openssl-1.0.1i/ ./config --prefix=/usr/local/openssl-1.0.1 -shared -fPIC
$/tmp/src/openssl-1.0.1i/ make clean
$/tmp/src/openssl-1.0.1i/ make
$/tmp/src/openssl-1.0.1i/ make test
$/tmp/src/openssl-1.0.1i/ Sudo make install

$Sudo /sbin/ldconfig -v /usr/local/openssl-1.0.1/lib

$/tmp/src/httpd-2.2.27/ make clean && make distclean
$/tmp/src/httpd-2.2.27/ ./configure --enable-so --enable-ssl=shared --with-ssl=/usr/local/openssl-1.0.1
$/tmp/src/httpd-2.2.27/ make
$/tmp/src/httpd-2.2.27/ Sudo make install

この問題は、openssl構成の-shared値によって修正されました。今、私はsslv2メソッドにアクセスできないという別の問題に直面しています。しかし、それはこの問題とは関係がなく、私にはまだ答えがありません。

Sslv2の問題に関する回答を引き続き検索し、解決したら関連するstackexchangeトピックに投稿します。

3
Thomas K

Httpd構成に間違ったバージョンのOpenSSLが含まれているようです。

checking for openssl/engine.h... yes
checking for SSLeay_version... no
checking for SSL_CTX_new... no

これは、OpenSSLが複数インストールされている場合に発生する可能性があります。 --with-ssl最新のOpenSSLインストールのプレフィックスと一致するオプション。

--enable-ssl \
--with-ssl=/usr/local \
2
emcconville

これは、opensslのpkg-configファイルがlibdlへの依存関係を指定しなくなったために発生します。 openssl.pcの新しいバージョンを見ると、-ldlが含まれていないことがわかります。

これがLIBS=-ldlは機能します(共有オブジェクトの使用に影響を与える可能性のある他のアプローチ)。

CHANGESログによると、0.9.6hから0.9.7への変更は、opensslが動的共有オブジェクトのロードを常に必要としないように行われました。 openssl.pcファイルへの変更が同時に行われたとは思いません。その変更がいつ行われたかはわかりません。

したがって、これは技術的には、ビルドに必要なライブラリを決定するためのApacheのpkg-configの使用におけるバグだと思います。 Apache 2.2.31をビルドしようとして同じ問題に遭遇しただけなので、この問題はかなり以前から存在しています。

0
Hod

他の誰かがこの問題を抱えているかどうかはわかりません。 Macでスクリプトを作成しているときにこの問題に遭遇しました。問題はopensslコンパイルにありました。基本的に、opensslはx86_64ではなくi386としてコンパイルされていました。
openssl configureを次のように使用しました:

./Configure darwin64-x86_64-cc shared --prefix=/usr/local/openssl-1.0.2g

opensslはデフォルトでx86_64としてコンパイルされているため、オフィスサーバーではこの問題は発生しませんでした。

0
radicaled