これらの詳細はおそらく無関係ですが、私は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プロファイルで設定したかに関係なく、これは私には影響がありませんでした。
他のGoogle検索では、次のようないくつかの環境変数を設定する可能性があります。
$ env LDFLAGS=-ldl
OR
$ export LIBS=-ldl
最初の1つは失敗し、同じエラーが表示されましたが、2つ目は機能しました。
それが原因で最初に機能しない場合は、コマンドを1行で実行する必要があります。これはLDFLAGS変数のランタイムを取得するため、保存されません。
例:env LDFLAGS = "-ldl"\./configure --prefix =/some/path ...
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トピックに投稿します。
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 \
これは、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をビルドしようとして同じ問題に遭遇しただけなので、この問題はかなり以前から存在しています。
他の誰かがこの問題を抱えているかどうかはわかりません。 Macでスクリプトを作成しているときにこの問題に遭遇しました。問題はopenssl
コンパイルにありました。基本的に、openssl
はx86_64ではなくi386としてコンパイルされていました。
openssl configureを次のように使用しました:
./Configure darwin64-x86_64-cc shared --prefix=/usr/local/openssl-1.0.2g
openssl
はデフォルトでx86_64としてコンパイルされているため、オフィスサーバーではこの問題は発生しませんでした。