CentOS5.0にlibapreq2(Apache2::Request)のrpmを入れる

webooの自重しないっぷりに吹いた(今日の挨拶)。

えー、今更ながらに初めてmod_perlを触ってみたんですが、CentOS5.0(x86_64)でApache2::Requestを使った時のメモ。正直お勧めはしません。あくまで記録として。よい子は真似しない方がよいです。

を参考にやってみたけど、Apache2::Requestのmakeが通らない。sudo cpanじゃなくて、自分のhome以下に入れようとしてるのが原因かなという気もするけど、root権限で手動ビルドしてどこに何が入ったか分からない状況は出来れば避けたい。

■cpan2rpmで

ならばcpan2rpmだ。ということで、まずはcpan2rpmをインストールするところから(普段は依存性を解決してパッケージ作るのが大変なのでスルー)。

$ wget "http://downloads.sourceforge.net/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm?modtime=1107798682&big_mirror=0"
$ sudo rpm -ivh cpan2rpm-2.027-1.noarch.rpm
$ cpan2rpm Apache2::Request
(中略)
Module not found on CPAN web site! at /usr/bin/cpan2rpm line 1201.

となって入らない。それもそのはずで、実際に入れるパッケージはlibapreq2らしい。

-- module: libapreq2 --
$ cpan2rpm libapreq2
(中略)
Using cached URL: http://search.cpan.org//CPAN/authors/id/J/JO/JOESUF/libapreq2-2.08.tar.gz
Tarball found - not fetching
Metadata retrieval
Tarball extraction: [/home/ryo/rpm/SOURCES/libapreq2-2.08.tar.gz]

んー。tar.gzを落としてきたところで終了してる。SPECファイルも無いので、ここからRPMを作るのは骨が折れそうだな。

FedoraRPM

Fedora7だと、yum install libapreq2で一発なんだよなぁ。ということで、Fedoraリポジトリのミラーを見ていくと、

こいつらを入れれば行けそう。wgetしてきて入れると、

$ sudo rpm -ivh libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm perl-libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm
警告: libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 4f2a6fd2
エラー: 依存性の欠如:
        libdb-4.5.so()(64bit) は libapreq2-2.09-0.rc2.4.fc7.x86_64 に必要とされています
        libdb-4.5.so()(64bit) は perl-libapreq2-2.09-0.rc2.4.fc7.x86_64 に必要とされています

/lib64/libdb-4.3.soがあるのを確認。バージョンの問題みたいです。それっぽいのを探すと、

db4.x86_64                               4.3.29-9.fc6           installed
db4.i386                                 4.3.29-9.fc6           installed
db4-devel.x86_64                         4.3.29-9.fc6           installed
db4-devel.i386                           4.3.29-9.fc6           base
db4-java.x86_64                          4.3.29-9.fc6           base
db4-tcl.x86_64                           4.3.29-9.fc6           base
db4-utils.x86_64                         4.3.29-9.fc6           base

このへんのパッケージの予感。

■libdb-4.5.so入手

関係しそうなキーワードでググってると、BerkeleyDBに含まれてるらしい。拾ってきて、中を見てると libdb-4.5.so を発見。これで動くかな?

$ wget http://download.oracle.com/berkeley-db/db-4.5.20.tar.gz
$ tar zxf db-4.5.20.tar.gz
$ sudo cp db-4.5.20/build_unix/.libs/libdb-4.5.so /lib64

パッケージを入れたわけではないので、libapreq2のRPMは--nodepsでインストール。

$ sudo rpm -ivh --nodeps libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm perl-libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm

かなり無理矢理だけど、これでmod_perlハンドラのモジュールで、

use Apache2::Reqeust;

sub handler : method {
    my ($class, $r) = @_;
    my $apr = Apache2::Request->new($r);
    my $mode = $apr->param('mode');
}

とかやったらURLからパラメータ取得出来ました。

色々と行儀悪いことしてるから、本当にこれで大丈夫かは不安だけど、しばらくこれでテストしてみよう。

ちなみに、Fedora7で動いてる/lib64/libdb-4.5.soをコピーしてきても動くことは動いた。md5sumは違ったけど。

こういう時にささっと自分でRPMビルド出来ないのがそもそもの問題であり、解決しなければ街で通りすがりに「吉野家で働くなどした方がよいですよ」と言われても今の自分には返す言葉がないので何とかしよう。