2009年1月30日金曜日

MacPortsでPHP5 (リベンジ編)

というわけでMacPortsでMySQL 5もPostgreSQL 8.3も入れてしまいました。

いよいよPHP5のインストールを再決行します。今回もまた前回の試行の残骸が残っていて悪さするので、とりあえず綺麗にするところから。

% port clean php5
---> Cleaning php5

さて、色々とvariantsを指定してインストール開始。
さっきは気付かなかったけど、PEARもオプションに入れてみました。

% port install php5 +apache2 +mysql5 +postgresql83 +pear
Error: Target org.macports.fetch returned: fetch failed Error: The following dependencies failed to build: apache2 curl pkgconfig freetype gd2 autoconf help2man p5-locale-gettext perl5.8 perl5 automake fontconfig jpeg libpng libtool libmcrypt mhash tiff

なんか、httpdをfetchしようとして失敗してる・・・。やっぱりapacheすらもMacPortsじゃないといけないのかな。と思ったらこちらのサイトが。早速参考にさせて頂き、apache2をfetchしてみる。

% env MASTER_SITE_LOCAL=http://distfiles.macports.org/apache2 port -v fetch apache2

なんか、あっさりfetch出来た。何かデフォルトのPortsのサイトにトラブルがあるのかな?改めてapache2のインストールだけを試みる。

% port install apache2

今度はうまく行きました。更に本命のPHP5に掛かります。

% port install php5 +apache2 +mysql5 +postgresql83 +pear

依存関係絡みで、pkg-configやcurl、freetype、perl、gettextといったパッケージも入る模様。何故Curl?、しかもperl既に入ってるんですが、って感じもするんだけれど。まぁ、PATHがちゃんとしてればMacOS Xデフォルトのバージョンとはかぶらないから大丈夫なのかな。それよりもMacPortsで入れたApache2をどうするかの方が気になる。

と思ったらエラーで停止。しかも、Perl 5.8.8をPerl 5.8用とPerl 5用と、二つの目的で二回別々にビルドして入れようとしてる。何かおかしくないか??

---> Fetching perl5.8
---> Attempting to fetch perl-5.8.8.tar.bz2 from http://www.cpan.org/src/5.0/
---> Verifying checksum(s) for perl5.8
---> Extracting perl5.8
---> Applying patches to perl5.8
---> Configuring perl5.8
---> Building perl5.8 with target all
---> Staging perl5.8 into destroot
---> Installing perl5.8 5.8.8_3+darwin_9
---> Activating perl5.8 5.8.8_3+darwin_9
---> Cleaning perl5.8
---> Fetching p5-locale-gettext

これと、

---> Fetching perl5
---> Attempting to fetch perl-5.8.8.tar.bz2 from http://www.cpan.org/src/
---> Verifying checksum(s) for perl5
---> Extracting perl5
---> Applying patches to perl5
---> Configuring perl5
---> Building perl5 with target all
---> Staging perl5 into destroot
---> Installing perl5 5.8.8_0+darwin_9
---> Activating perl5 5.8.8_0+darwin_9
Error: Target org.macports.activate returned: Image error: /opt/local/bin/a2p is being used by the active perl5.8 port. Please deactivate this port first, or use the -f flag to force the activation.
Error: The following dependencies failed to build: gd2 autoconf help2man perl5 automake fontconfig jpeg libpng libtool libmcrypt mhash tiff Error: Status 1 encountered during processing.

これ。当然同じ物だからかち合うよね。。。とりあえずエラー発生後にインストール済パッケージを調べると、

% port list installed
(snip)
perl5 @5.8.8 lang/perl5
perl5.8 @5.8.8 lang/perl5.8
(snip)

そりゃあ当然入ってるよね。エラー出た割にちゃんと入っているみたいなので、しつこくPHP5のインストールを再実行してみる。

% port install php5 +mysql5 +postgresql83 +pear

すると、何事も無かったかの様に(笑)、help2manautoconfautomakefontconfigjpeglibpnglibtoolgd2libmcryptmhashtiffphp5とインストールを続行する。依存パッケージ大杉。全部ソースのtar-ballダウンロードして展開してビルドしてインストールだから、めっちゃ時間掛かるしCPUも喰う。(コンパイラのCPU負荷は高いですから・・・)グラフィックス描画のgdライブラリをビルドするから画像系のパッケージが要るのかな?それにしても、さっきのエラーは何だったんだろうか。。。

さて、時間は掛かったものの無事インストールは終了。最後に以下のコマンドを実行することを進められたので、実行しておく。

% cd /opt/local/apache2/modules
% /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

するとエラーが・・・

% cd /opt/local/apache2/modules
% /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
apxs:Error: Config file /opt/local/apache2/conf/httpd.conf not found.

で、件の/opt/local/apache2/confディレクトリ以下を見ると、httpd.confは無く、httpd.conf.sampleがある。そこで、サンプルをコピーして上記のコマンドを再実行。

% cp httpd.conf.sample httpd.conf
% cd /opt/local/apache2/modules
% /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]

今度はうまく行きました!

今回はMacPortsでもApache2を入れ、PHP5はそちらに設定しました。MacOS XデフォルトのApacheでMacPortsのPHP5を参照しても良いんですが、今日は水入りとしまして・・・

それにしても、ホントMacPortsって何でも出来ちゃいますね。元々のPortsシステムも凄いけれど、それをMacOS Xに移植してくれた人も凄いです。先人の知恵と努力の結晶に感謝しつつ、今日も何とか作業が完了しました。

0 件のコメント: