kopug memo

名古屋で働くとあるWebエンジニアの覚書。

RPMでmod_perl2をインストール

うちのサーバはCentOSなので、Redhat系です。
Redhat系はアプリケーション管理をRPMで行なうので、その流儀に従います。

まずyumリポジトリmod_perlが存在するかを調べてみる。

 $ sudo yum search mod_perl

 mod_perl.i386              1.99_16-4.centos4      base

このblogを書いている時点では mod_perl2 は公開されていませんでした。
てことで自分でmod_perlRPMを作ってしまおうと。

まず下記のサイトより最新版のmod_perlをダウンロードします。
http://perl.apache.org/download/index.html

ここではVersion 2.0.2が最新版だったので、これをDLして解凍します。

 # cd /usr/src/redhat/SOURCES
 # wget http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz
 # tar zxf ./mod_perl-2.0-current.tar.gz

mod_perl-2.0.2/ というディレクトリができているので、その中を覗いてみます。

 # cd ./mod_perl-2.0.2
 # ll

 合計 256
 drwxr-xr-x   4 1001 wheel  4096  8月 27 17:23 Apache-Test
 -rw-r--r--   1 1001 wheel  1525 10月 21  2005 BRANCHING
 -rw-r--r--   1 1001 wheel 94857 10月 21  2005 Changes
 -rw-r--r--   1 1001 wheel   646 10月 21  2005 INSTALL
 -rw-r--r--   1 1001 wheel 11358 10月 21  2005 LICENSE
 -rw-r--r--   1 1001 wheel 29838 10月 21  2005 MANIFEST
 -rw-r--r--   1 1001 wheel   551 10月 21  2005 META.yml
 -rw-r--r--   1 1001 wheel 25380 10月 21  2005 Makefile.PL
 drwxr-xr-x   4 1001 wheel  4096  8月 27 17:23 ModPerl-Registry
 -rw-r--r--   1 1001 wheel  2108 10月 21  2005 README
 -rw-r--r--   1 1001 wheel  1811 10月 21  2005 README-SVN
 -rw-r--r--   1 1001 wheel  6592 10月 21  2005 RELEASE
 -rw-r--r--   1 1001 wheel  1223 10月 21  2005 STATUS
 -rw-r--r--   1 1001 wheel  1696 10月 21  2005 SVN-MOVE
 drwxr-xr-x   2 1001 wheel  4096  8月 27 17:23 bin
 drwxr-xr-x   2 1001 wheel  4096  8月 27 17:23 build
 drwxr-xr-x   6 1001 wheel  4096  8月 27 17:23 docs
 drwxr-xr-x   6 1001 wheel  4096  8月 27 17:23 lib
 -rw-r--r--   1 1001 wheel  2904 10月 21  2005 mod_perl.spec
 drwxr-xr-x   3 1001 wheel  4096  8月 27 17:23 src
 drwxr-xr-x  22 1001 wheel  4096  8月 27 17:23 t
 drwxr-xr-x   2 1001 wheel  4096  8月 27 17:23 todo
 drwxr-xr-x   2 1001 wheel  4096  8月 27 17:23 util
 drwxr-xr-x   7 1001 wheel  4096  8月 27 17:23 xs

この中に"mod_perl.spec"というファイルが存在します。このファイルがRPMを作成する上で必須となるものです。
mod_perl.spec の中味を覗いてみます。

 # vi mod_perl.spec

 %define         _version 2.0.3
 %define         _release 1
 %define         _source http://perl.apache.org/dist/mod_perl-2.0.3.tar.gz
 %define         _dirname mod_perl-2.0.3

バージョン情報が実際と異っております。このままではrpmbuildに失敗するので、ここではバージョンを元に戻します。

 %define         _version 2.0.2
 %define         _release 1
 %define         _source http://perl.apache.org/dist/mod_perl-2.0.2.tar.gz
 %define         _dirname mod_perl-2.0.2

このディレクトリをtar.gzに圧縮します。
必要なファイルを/usr/src/redhat にコピーします。

 # cd ..
 # tar zcf mod_perl-2.0.2.tar.gz ./mod_perl-2.0.2
 # cp ./mod_perl-2.0.2/mod_perl.spec /usr/src/redhat/SPEC

でここで、RPM形式にビルドします。ただ下記の依存モジュールは予めyumでインストールしておくこと。
ApacheモジュールをDSOで入れる場合は必ず必要になります。

 # yum install httpd-devel
 # cd /usr/src/redhat/SPEC
 # rpmbuild -bb mod_perl.spec

 : : 省略

 書き込み中: /usr/src/redhat/RPMS/i386/mod_perl-2.0.2-1.i386.rpm
 書き込み中: /usr/src/redhat/RPMS/i386/mod_perl-devel-2.0.2-1.i386.rpm
 書き込み中: /usr/src/redhat/RPMS/i386/mod_perl-debuginfo-2.0.2-1.i386.rpm

でインストールをしてみる。

 # rpm -ivh /usr/src/redhat/RPMS/i386/mod_perl-2.0.2-1.i386.rpm

 エラー: Failed dependencies:
         perl(Apache2::FunctionTable) is needed by mod_perl-2.0.2-1.i386
         perl(Apache2::StructureTable) is needed by mod_perl-2.0.2-1.i386
         perl(Apache::TestConfigParse) is needed by mod_perl-2.0.2-1.i386
         perl(Apache::TestConfigPerl) is needed by mod_perl-2.0.2-1.i386
         perl(BSD::Resource) is needed by mod_perl-2.0.2-1.i386
         perl(Data::Flow) is needed by mod_perl-2.0.2-1.i386
         perl(Module::Build) is needed by mod_perl-2.0.2-1.i386

どうやら上記のモジュールがないとこのままではインストールできないみたい。orz
続きはまた今度。