YosemiteでPerlを動かす


ごく稀な MovableType 案件や運用中のウェブアプリケーションが幾つかあって動作させることが必要な Perl (と Apache2 の mod_perl)なのですが、OS X 10.10 Yosemite 上の perl -v コマンドで次のようなエラーを、そしてブラウザ上ではコードがそのまま出力されるという事態に遭遇し動かなかったので調べました。

dyld: Library not loaded: /System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE/libperl.dylib
Referenced from: /usr/local/bin/perl
Reason: image not found
Trace/BPT trap: 5

まず /System/Library/Perl/を見ると Yosemite には 5.16 と 5.18 という2種類のバージョンの Perl が用意されているにも関わらず 5.8.8 を読みにいっている事実が分かります。また2行目では Yosemite のクリーンインストール時に話題となっていた /usr/local/ 移動問題に起因しているのと推測しました。今回の場合、Yotemite をアップグレードとしてインストールしたので両方のディレクトリが残っているのだと思います。

そこで /usr/local/bin/ にある2009年に作成された perlperl5.8.8 の2つのファイルを確認した上で、/usr/bin/ にある perlperl5.18/usr/local/bin/ へ移動(同名ファイルは置換)したところ、ターミナルでバージョンを正しく返すようになりました。コマンド上の操作が面倒な場合は open /usr/local/bin/ と打って Finder 作業にすると良いでしょう。

次に、Apache 2.4 への mod_perl のコンパイルと /etc/apache2/httpd.conf の編集作業を下記参考リンクにある手順通りに進めました。前回の投稿を伏線としたのはここに理由があります。

最後にユーザディレクトリで Perl のファイルを CGI として動かすべく、sudo vi /etc/apache2/users/hkitago.conf として <Directory "/Users/hkitago/Sites/"> ノードに次の内容を書き込みました。Apache 2.4 からは Options の書き方にも変更があることに気がつかず若干ハマりました。
AddHandler cgi-script .cgi .pl
Options +Indexes +FollowSymLinks +MultiViews +ExecCGI

http://hkitago.tumblr.com/post/109860012671

締めに sudo apachectl restart を実行しめでたしめでたし…となるのですが、Perl 6 のリリースというニュースも飛び交う中、何故に mod_perl がなかったのかという話で力が抜けました。笑

http://hkitago.tumblr.com/post/109860734616

参照: