debian etch に apache2.2.11 をソースからインストール

・前準備
他のオープンソースプロジェクトと同様、 ビルド環境構築に libtool と autoconf を使う、ということで、以下のように事前にインストールしておく。

# aptitude install libtool
# aptitude install autoconf


また、gcc, make も当然必要。
apr, apr-util が既にインストールされている場合は、ver 1.2 である必要がある。
mod 作るときに必要になる apxs 等を使う場合は Perl5 も必要。

apr のインストール
apr*1 は、OSなどの環境の違いを吸収するAPIapr がまだインストールされていない場合は、apache の tarball に含まれている apr をインストールする。 *2

# cd srclib/apr
# ./configure
# make
# make test
# make install

prefix を指定しない場合、/usr/local/apr にインストールされる。


apr-util のインストール
apr-util version 1.2.11 においては、MySQL DBD driver は tarball に含まれてはいるものの、ライセンスの関係でデフォルトでビルドされない。使用したい場合は、--with-mysql オプションを cofigure 時に指定しておく必要がある。

# cd ../apr-util
# ./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-util --with-mysql
# make
# make test
# make install

prefix を指定しない場合、/usr/local/apr にインストールされる。apr とは別ディレクトリに入れておきたかったので、ここでは、prefix を指定することにした。apr の場所もオプションで指定している。

ちなみに、make test すると、最後に、

Failed to load driver file apr_dbd_sqlite2.so
Failed to load driver file apr_dbd_sqlite3.so

と表示されるが、これはエラーではなく、sqlite がインストールされていないだけ。

apache の configure

cofigure コマンドを実行するだけだが、オプションに関しては、以下のようになっている。

--prefix=PREFIX
PREFIX を指定しなかった場合のデフォルトは /usr/local/apache2。
デフォルトで問題ないんで、prefix は指定しなくていいだろう。


--enable-MODULE
mod の中でもステータスが "Base" になっているものは指定しなくても最初から入る。Base 以外のものはこのオプションで有効になる。MODULE には mod_ を取り除いたモジュール名を指定する(アンダースコアはダッシュで置換)。*3


--with-apr=/usr/local/apr/
上記でインストールした apr の場所


--with-apr-util=/usr/local/apr-util/
上記でインストールした apr-util の場所

で、以下のように実行。mod は全部入り。

# cd ../../
# ./configure \
 --with-apr=/usr/local/apr/ \
 --with-apr-util=/usr/local/apr-util/ \
 --with-mpm=worker \
 --with-mysql=/usr\
 --enable-modules=most \
 --enable-mods-shared=most \
 --enable-logio=static \
 --enable-log-config=static \
 --enable-dbd=shared \
 --enable-so 
# make
# make install

これも prefix 指定していないため、/usr/local/apache2 にインストールされる。
インストールはこれにて終了。

*1:http://ja.wikipedia.org/wiki/Apache_Portable_Runtime

*2:./buildconf の実行は apr のソースを svn から取得した時は必要だが、apache の tarball からインストールする場合は必要ない。

*3:enable-module について、その他の事項をApacheのマニュアルより引用:--enable-module=shared オプションを使って、モジュールを シェアードオブジェクト (DSO) -- 実行時にロードしたり アンロードしたりできる形式 -- としてコンパイルすることもできます。 同様に、--disable-module オプションで Base モジュールを無効化することもできます。 これらのオプションを使っているときに、もし指定したモジュールが存在しなくても configure は警告を上げることなく、単純にオプションを 無視することに気をつけてください。