Mac OSX を El Capitanにしたら自作CGIが動かないでござる
前回、Yosemiteにした時から動いてないんですけどね。
でも、前回はApache 2.4系に対応したmod_perlが未リリースだったのですが、今年の4月に対応版がリリースされているので、今回こそ頑張ってみます。
まず、mod_perlから。
%tar -xf mod_perl-2.0.9.tar.gz %cd mod_perl-2.0.9 %perl Makefile.PL MP_CCOPTS=-std=gnu89
とやると、
[ error] Unable to open /usr/include/apache2/: No such file or directory
というエラーが発生。ていうか、そもそも"/usr/include/apache2"というディレクトリーすら無い。
include検索パスを追加すれば良いのだろうと思ったけれども、それではエラーは解消できなかった。
しかも、"/usr/include"というディレクトリーを作ることすらパーミッションエラーで弾かれる。sudo も効かない。
解決策は、
%sudo cp /usr/bin/apxs /usr/local/bin %sudo cp /usr/bin/apr-1-config /usr/local/bin
とした後、"/usr/local/bin/apxs"を編集。
my $prefix = get_vars("prefix");
となっている所を
my $prefix = "/usr/local";
と変更する。
同様に "/usr/local/bin/apr-1-config"も、
prefix="/usr"
を
prefix="/usr/local"
へ変更する。
これで、"/usr/local/include"を参照することになったのですが、そこには"apache2"のディレクトリはないので、
%ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr/include/apache2 /usr/local/include/apache2 %ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr/include/apr-1 /usr/local/include/apr-1
とシンボリックリンクを作成しておく。
これで再び
%perl Makefile.PL MP_CCOPTS=-std=gnu89
とやると、特にエラーはない様子。
ところが、makeすると「ap_release.h」がないというエラーでコンパイルが止まる。
エラーをよく見ると、「-I/usr/include/apache2」というオプションが付いており、再びinclude検索パスがおかしくなっている。
かすかな記憶が蘇り、
%sudo chmod a+w /Library/Perl/5.18/darwin-thread-multi-2level/Apache2/BuildConfig.pm
とした後に、"BuildConfig.pm"を編集。
以下の項目を現状に合わせて書き換えた。
'APXS_INCLUDEDIR' => '/usr/local/include/apache2', 'MP_APXS' => '/usr/local/bin/apxs', 'ap_includedir' => '/usr/local/include/apache2', 'apr_config_path' => '/usr/local/bin/apr-1-config', 'apr_includedir' => '/usr/local/include/apr-1',
この後、
%make clean %perl Makefile.PL MP_CCOPTS=-std=gnu89 %make %sudo make install
で無事インストール完了。
"/etc/apache2/httpd.conf"に登録してみる。
LoadModule perl_module /usr/local/libexec/apache2/mod_perl.so
を書き加えて、
%apachectl configtest
でテストOKだったので、
%sudo apachectl -k restart
で、無事起動しました。
次は、Libapreq2。
%tar -xf libapreq2-2.13.tar.gz %cd libapreq2-2.13 %perl Makefile.PL
とすると、
build/version_check.pl failed: no version_string found in '' for 'apache2'. configure: error: Bad apache2 binary (/usr/local/sbin/httpd)
というエラーが。
たしかに、httpdのパスは"/usr/sbin/httpd"のままで、これはコピーする気になれないので、Makefile.PLを書き換えることに。
my $opts = "";
という箇所に、現状に合わせたデータを追記。
my $opts = ""; $opts .= "--prefix=/usr/local "; $opts .= "--with-apache2-httpd=/usr/sbin/httpd "; $opts .= "--with-apache2-apxs=/usr/local/bin/apxs "; $opts .= "--with-apr-config=/usr/local/bin/apr-1-config ";
保存したら、作業を再開。
%perl Makefile.PL %make %sudo make install
であっさりインストール完了。
"/etc/apache2/httpd.conf"に登録。
LoadModule apreq_module /usr/local/libexec/apache2/mod_apreq2.so
を追記。
%apachectl configtest
でテストOKだったので、
%sudo apachectl -k restart
で、無事起動しました。
というわけで、1年半ぶりに自作CGIが起動しました。