macportsでPerl5.12(Perl5.8以外)+mod_perl2のインストールが失敗する

この情報は古いです。最近のmacports+perl5+mod_perlに関しては「macports + Perl5 + mod_perl2に関する最近の事情」の方をご覧下さい。

macportのmod_perl2の依存関係はport deps mod_perl2で調べてみると出力結果は、

Full Name: mod_perl2 @2.0.4_0+universal
Library Dependencies: perl5, apache2

と表向きperl5に依存していることになっていますが、sudo port install perl5 でインストールされるperlが5.8である前提になってるため、前もってインストールしていたPerl5がPerl5.12(Perl5.8以外)だった場合、インストールに失敗します。

ちなみちょっと前まで確かに sudo port install perl5 でインストールされるperlのバージョンは5.8でしたけど、今は特にvariantsを指定しなければ5.12が入るのでハマります。

解決法

に解決法が書かれているのですが、とりあえず

  1. perl5.12が既に入っていて、
  2. sudo port install mod_perl2でインストール失敗したところ

という状態からのインストール方法をまとめてみます。

まずPerl5.12ですが、もしvariants +threads を指定せずにインストールしている場合はvariantsを付加して再インストールします。

sudo port -d install perl5.12 +threads

次に先ほど失敗した mod_perl2 を一旦cleanします(前提がインストール失敗したところなので)。

sudo port -d clean mod_perl2

続いて mod_perl2 の Portfile を以下のように書き換える

sudo vi /opt/local/var/macports/sources/rsync.macports.org/release/ports/www/mod_perl2/Portfile
旧50行目
system "cd ${destroot}${prefix}/lib/perl5/site_perl/5.8*/darwin-*2level/auto/mod_perl2/ \
新50行目
system "cd ${destroot}${prefix}/lib/perl5/site_perl/5*/darwin-*2level/auto/mod_perl2/ \

最後に変更を保存したら再度 mod_perl2 をインストール

sudo port -d install mod_perl2

これでインストールできるようになります。