今回は、Apacheが同梱しているけど、うまくインストールできないパッケージをインストールする方法を解説します(編集部)
第14回から、Apache HTTP Server(以下Apache)をビルドする方法を解説してきました。ここ何回かは、ビルド時に「すべてのモジュール」を指定してもビルドされないモジュールのうち、比較的利用頻度が高いと思われるモジュールを取り上げ、トラブル解決方法を解説してきました。残るモジュールはldapです。これは、LDAPというネットワークプロトコルを利用するときに必要になるものです。
LDAPについて簡単に説明しておきます。LDAPはLightweight Directory Access Protocolの略で、ディレクトリサービスへのアクセスに使うプロトコルです。ディレクトリサービスはデータベースの一種で、ユーザーのアカウントやネットワーク機器などの情報を一元管理し、検索できるようにするシステムです。
LDAPにはいろいろな使い方がありますが、Linux/UNIXでは主にユーザーアカウント情報の一元管理に使います。LDAPを使うことで、各サーバのログインアカウントやSambaのファイル共有のアカウントを、1カ所で管理できるようになります。多くのユーザーのIDとパスワードを1カ所にまとめることができるため、社内システムなどで広く使われています。
実装としては商用のもの含め何種類かありますが、LinuxではオープンソースのOpenLDAPを使うことが多いと思います。OpenLDAPはLDAPサーバとクライアント用のライブラリが含まれており、今回Apacheで利用するのはクライアントライブラリです。なお、ApacheではOpenLDAPだけでなく、商用のLDAPソフトウェアを利用することもできます。
Apacheのldapモジュールと言うと、実際にはldapとauthnz-ldapの2つを指します。前者はLDAPサーバへの接続を管理するモジュールで、後者はLDAP認証のためのものです。つまり、authnz-ldapモジュールにはldapモジュールが必要ということになります。
2つのモジュールに分かれているのは、今後LDAPを認証以外の用途で使うようなモジュールが開発されたときでも、接続部分を共通で使えるようにするためです。ちなみに、dbdモジュールとauthn-dbdもまったく同じ理由で分かれています。authn-dbdはデータベースで認証をするモジュールですが、dbdモジュールでデータベースへの接続を管理するようになっています。
それでは実際にビルドにとりかかります。OpenLDAPのライブラリを利用しますので、次のようにopenldap-develパッケージをインストールしましょう。
$ sudo yum install openldap-devel
configureスクリプトのヘルプから、ldapに関する引数を抜き出すと次のようになります。
$ ./configure --help | grep ldap --enable-authnz-ldap LDAP based authentication --enable-ldap LDAP caching and connection pooling services
ldapとauthnz-ldapモジュールを有効する引数です。これを追加すると、configureのコマンドラインは次のようになります。
./configure \ --prefix=/opt/apache-httpd-2.2.19 \ --enable-mods-shared=all \ --enable-authnz-ldap \ --enable-ldap \ --with-mpm=prefork \ 2>&1 | tee configure_log.txt
これでビルドをしてみてください。大量にエラーが発生してmakeが失敗したはずです。configureのヘルプに従ったのに、これはどういう事でしょうか。
こういうときは別のドキュメントを当たるべきです。Web上のドキュメントの、ldapモジュールのページの冒頭に、次のような一節があります。
To enable this module, LDAP support must be compiled into apr-util. This is achieved by adding the --with-ldap flag to the configure script when building Apache.
apr-utilをLDAPサポートを有効にしてビルドしなければならず、それには「--with-ldap」引数を使うとあります。しかし先ほどldapに関する引数をヘルプから抜き出したところ、そういった引数はありませんでした。結論を言うと、この引数はApacheのconfigureのものではなく、apr-utilのものなのです。
apr、apr-utilについては第14回で少し触れましたが、Apacheのビルドに欠かせないライブラリで、Apacheに同梱された状態で配布されています。これらのライブラリはApache Portable Runtime、Apache Portable Runtime Utilityの略で、OS間の差異を吸収するためのものです。もともとApacheの一部であったものが今は分離独立したプロジェクトとなっており、Apache以外からも利用されています。
独立したソフトウェアですので、それぞれがconfigureスクリプトを持っていて、そのままApacheに同梱されています。しかし今までのビルド手順の通りにビルドしても、aprやapr-utilのconfigureは実行しているようには見えません。これはApacheのconfigureの内部で、aprなどのconfigureも自動的に実行しているためです。configureの出力をよく見ると、そのような表示になっているのが分かります(図1)。
checking for chosen layout... Apache checking for working mkdir -p... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu Configuring Apache Portable Runtime library ... checking for APR... reconfig configuring package in srclib/apr now checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu Configuring APR library Platform: x86_64-unknown-linux-gnu checking for working mkdir -p... yes APR Version: 1.4.5 checking for chosen layout... apr checking for gcc... gcc (略)
この同梱ライブラリのconfigureに引数を指定する方法としては、あらかじめそれぞれのソフトウェアを手作業でconfigure、ビルド、インストールしておくという方法が真っ先に思いつきますが、Apacheのconfigure経由で指定することもできます。
Apacheのconfigureは、引数をそのままaprやapr-utilなどの同梱ソフトウェアに渡すようになっています。「--with-ldap」はApacheのconfigureの引数ではないので無視され、動作に影響を及ぼすことはありません。aprについても同様です。最終的にapr-utilのconfigureに「--with-ldap」が渡されると、LDAPサポートが有効に設定されるのです。
従って、ldapモジュールをビルドするには、次のようなコマンドラインを実行すればよいということになります。この内容であれば無事ビルド、インストールが完了します。
./configure \ --prefix=/opt/apache-httpd-2.2.19 \ --enable-mods-shared=all \ --enable-authnz-ldap \ --enable-ldap \ --with-mpm=prefork \ --with-ldap \ 2>&1 | tee configure_log.txt
このように、本来のconfigureの引数ではなく、同梱ソフトウェアの引数を指定しなければならないケースもあります。この場合はヘルプ表示には出てこないので、ドキュメントや同梱ソフトウェアもよく確認しましょう。
同梱ソフトウェアは別途インストールする手間が省けるため、便利ではありますが、他のソフトウェアと組み合わせたときにバージョンが一致しないという問題も起こしやすく、要注意です。この問題についてはいずれ解説します。
次回は、ldapと同様に、apr-utilで設定できる内容について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.