Apache 2.2.21 をrpmbuildしようとして失敗したことについて

しばらく前にApache Killerが巷を騒がしましたね。
それに伴いApacheの2.2.20が公開されましたが、バグがいくつかあったようで、最新版(2011/09/15)ではバージョンが2.2.21に上がっています。

私はnginxを利用しているのでこの事件には関わっていないのですが、最新版を触ってみようと思いソースからrpmbuildしようと思いました。
(実際の最新版は2.3がありますがbeta版なので後回し)
その時に引っかかってしまった点をメモしておきます。(忘れやすいので)

まずは本家からソースをダウンロードします


 wget http://www.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.2.21.tar.gz


rpmbuildコマンドでrpm化しようとしました


# rpmbuild -ta --target x86_64 httpd-2.2.21.tar.gz
ビルド対象プラットフォーム: x86_64
ターゲット x86_64 用にビルド中
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.25465
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
〜中省略〜
checking whether Distcache is required... yes (specified)
checking distcache/dc_client.h usability... no
checking distcache/dc_client.h presence... no
checking for distcache/dc_client.h... no
configure: error: distcache support failed: can't include distcache headers
エラー: /var/tmp/rpm-tmp.22520 の不正な終了ステータス (%build)


RPM ビルドエラー:
/var/tmp/rpm-tmp.22520 の不正な終了ステータス (%build)


とdistcacheというSSL/TLSセッションのキャッシュを有効にするためのもののようです。
きっと最新版ではこの設定があるようです。
なのでdistcacheをインストールします。yumでもbaseレポジトリにありますのでインストール可能です。


# yum  --enablerepo=epel --enablerepo=remi --enablerepo=dag install distcache.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
* remi: rpms.famillecollet.com
Setting up Install Process
Resolving Dependencies

    • > Running transaction check
      • > Package distcache.x86_64 0:1.4.5-14.1 set to be updated
    • > Finished Dependency Resolution

Dependencies Resolved

====================================================================================================
Package Arch Version Repository Size
====================================================================================================
Installing:
distcache x86_64 1.4.5-14.1 base 121 k

Transaction Summary
====================================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)

Total download size: 121 k
Is this ok [y/N]:

〜中省略〜


Installed:
distcache.x86_64 0:1.4.5-14.1

Complete!

再度rpmbuildを実行します

# rpmbuild -ta --target x86_64 httpd-2.2.21.tar.gz

また同じところで引っかかりましたw

distcache-develが必要だったようです。


# yum  --enablerepo=epel --enablerepo=remi --enablerepo=dag install distcache-dev                                                                                                              el.x86_64
〜中省略〜
Running Transaction
Installing : distcache-devel 1/1

Installed:
distcache-devel.x86_64 0:1.4.5-14.1

これで今度こそちゃんと通るようになるはずです。

# rpmbuild -ta --target x86_64,noarch httpd-2.2.21.tar.gz                                                                                                                                      ビルド対象プラットフォーム: x86_64,noarch
ターゲット x86_64 用にビルド中
〜中省略〜

checking for distcache/dc_client.h... yes
checking for Distcache version... yes
checking for Distcache libraries... yes
adding "-ldistcache" to MOD_SSL_LDADD
adding "-lnal" to MOD_SSL_LDADD
adding "-export-symbols-regex" to MOD_SSL_LDADD
adding "ssl_module" to MOD_SSL_LDADD
checking whether to enable mod_ssl... shared (all)
adding "-I$(top_srcdir)/modules/ssl" to INCLUDES
〜省略〜

これでビルド完了です^^

rpmの場所は

/usr/src/redhat/RPMS/x86_64/httpd-2.2.21-1.x86_64.rpm

になるのでこれをrpmコマンドでインストールしたら最新版のApacheがインストール可能になります

*1rpmファイルはこちらからダウンロードできるようにしてあります^^


Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

最初はこれを読んでどんな設定が使えるのかとかを知ると良いと思う(^O^)

*1:rpm置き場